한 시스템에서 다른 시스템으로 심볼릭 링크를 심볼릭 링크로 복사하는 방법은 무엇입니까? 두 번째 링크에서는 sftp를

두 개의 동일한 시스템이 있다고 가정합니다. 첫 번째 시스템에서 심볼릭 링크를 만들었습니다. 두 번째 링크에서는 sftp를 통해 해당 symlink를 복사하려고합니다. symlink는 동일하게 작동합니다 (예 : symlink가 링크 된 /etc/후 복사 한 후 symlink 만 복사되고 symlink 만 링크됩니다 (링크 된 파일이 아님)).

내가 어떻게 할 수 있는지 / 내가 할 수 있다면? 나는 단지 심볼릭 링크를 복사 할, 아무것도; 단지 참조.



답변

symlink를 tar로 설정하면 원하는 방식으로 tarball을 원격 시스템에 복사 할 수 있습니다. 압축을 풀면 기호 링크 만 복사하고 다른 것은 복사하지 않은 것을 알 수 있습니다. 예를 들면 다음과 같습니다.

이것을 테스트하기 위해 먼저 텍스트 파일을 만들었습니다.

echo this is a test > file.txt

그런 다음 파일에 대한 심볼릭 링크를 만들고 tar gzip으로 압축하십시오.

ln -s file.txt link.lnk
tar czvf tarball.tar.gz link.lnk

이 파일을 다른 컴퓨터로 전송 한 다음 압축을 해제하십시오.

tar xzvf tarball.tar.gz

심볼릭 링크가 있지만 해당 파일이 가리키는 원본 파일은 없습니다.

물론 관계를 유지하면서 원본 파일과 심볼릭 링크를 모두 전송하려면 tarball에 파일을 둘 수 있으며 둘 다 전송할 수 있으며 압축을 풀 때 심볼릭 링크가 원본 파일을 올바르게 가리켜 야합니다 대상 위치의 tarball


답변

심볼릭 링크를 정확히 어떻게 처리하고 싶은지는 불분명합니다. 내가 이해 한 것처럼 다른 시스템에서 심볼릭 링크를 다시 만들고 싶습니다. 심볼릭 링크는 파일 시스템에 따라 다르므로 파일을 복사하는 데 사용되는 프로토콜은이를 알고 있어야합니다. 좋은 예는 옵션 rsync과 함께 사용 하는 -a것입니다.

더 구체적으로, -l옵션이지만, -a아마도 당신이 원하는 것입니다.

대상을 끌어 당기지 않고 심볼릭 링크를 다시 만듭니다 (링크 참조).


답변

매우 쉬운 솔루션 (홈 디렉토리 용) :

tar -c SYMLINKFILE | ssh machine 'tar -x'

또는

tar -c SYMLINKFILE | ssh machine 'tar -xC /some/other/location  '

예 :

tar -c .bashrc | ssh another_machine 'tar -x'

다른 (예 : 네트워크) 대상에 배치 된 심볼릭 링크 된 .bashrc를 제공합니다.


답변

@polemon이 이미 답변했습니다.

그러나 빠른 해결책을 위해 약간의 부담을지고 있습니다.

내가 사용하려는 스위치를 알기 위해 man rsync를 수행해야했습니다 …

rsync -avz -e ssh /file or sym link/to/copy/ user@ip:/dest/path/

그러나 귀하의 경우 링크가 끊어지지 않았는지 확인해야합니다!


답변

다른 답변은 이미 심볼릭 링크를 다른 컴퓨터로 전송하는 방법을 설명합니다. 그러나 심볼릭 링크를 전송하는 방법에 관계없이이 심볼릭 링크를 사용 /etc/하여 FTP, SFTP, SCP, SSH 또는 다른 방법으로 파일에 액세스 할 수 없습니다 . 이러한 서비스는 지정된 디렉토리에 chroot되어 있거나 명시 적으로 공유되지 않은 파일에 대한 액세스를 제공하지 못하는 경향이 있습니다. 물론 구형 시스템에서는이를 해킹 할 수있는 방법이 항상 있지만 이러한 취약점은 발견 되 자마자 패치되고 업그레이드되는 경향이 있습니다. 미안합니다. 당신이하고 싶은 일이 가능할 것이라고 생각하지 않습니다.


답변