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


13

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

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


이미 설명한 것처럼 작동하지 않습니까?
mikeserv

1
sftp그렇게 할 수 없습니다. rsync로 할 수 있습니다ssh cp ...
roaima

내가 달성하려고하는 것은 상징적 인지도를 복사하는 것입니다 ... 파일을 원하지 않습니다 .. FOLDER> ETC라는 코드를 원합니다 ... 서버에서 심볼릭 링크를 만들고 움직이고 싶습니다. 그것은 서버에 필요 ...에 동봉 된 파일을 해킹하려고 메신저
TheHidden

1
@roaima ssh cp? scp처럼? 어떻게?
technical_difficulty

답변:


12

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


이것은 다소 흥미롭지 만 슬프게도 도움이 될 것이라고 생각하지 않습니다. 노예를 제어 할 수는 없습니다.이 SFTP는 API를 통해 폴더를 잠그는 데 사용되지만 심볼릭 링크를 사용하여 상자를 해킹하려고합니다. 비상 사태와 내가 선택한 파일을 실행하지 않는 안전상의 이유로 선택한 업데이트를 푸시하는 마스터로부터 액세스해야하지만 symlink가 가능하면 symlink를 통해 파일을 교체하여 기존 프로세스에 이론적으로 코드를 삽입 할 수 있습니다 ... 그러나 그것을하기 위해서는 100 % raw 이상의 심볼릭 링크를 복사해야합니다 :(
TheHidden

@ user1779617 "노예"와 "마스터"의 의미는 여전히 명확하지 않습니다. 왜냐하면 서버와 클라이언트 모두에 대해 두 용어를 서로 바꿔 사용할 수 있기 때문입니다. 서버 에서 심볼릭 링크를 만들어야하는 경우 SFTP 를 사용하여 심볼릭 링크를 만들 수 있지만 구성에 따라 SFTP 데몬의 루트 영역 외부를 보지 못할 수 있습니다. sftp( linux.die.net/man/1/sftp ) 매뉴얼 페이지를 참조하십시오 ! symlink당신이 필요로하는 것으로 특별히 명령이 있습니다 .
polemon

5

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

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

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


hm이 보이므로 파일처럼 복사하고 링크를 유지할 방법이 없습니까? 파일을 직접 이동하는 기능 만 있습니다. 동일한 시스템에서 심볼릭 링크를 작성하고 복사하거나 희망하고 있습니까?
TheHidden

@ user1779617 우선 : "move"라고 말할 때 실제로 "move"또는 "copy"를 의미합니까? "이동"은 원본 파일을 삭제함을 의미하기 때문에 (귀하의 질문을 편집 한 이유이기도합니다). 두 번째 : 특정 파일 전송 프로토콜 (FTP 만 해당)로 제한되어 있습니까? 그렇다면 그 범위 내에서 논의하고있는 파일 시스템에 대해 논의해야합니다.
polemon

SFTP 만 해당, 심볼릭 링크가 필요한 시스템에서만 다운로드하므로 마스터에서 슬레이브 SFTP로만 복사하고 sftp 연결은 슬레이브에서만 연결합니다.
TheHidden

@ user1779617 "클라이언트"(슬레이브) 및 "서버"(마스터)를 의미한다고 가정합니다. 스위치를 sftp사용하여 하위 디렉토리를 통과 -r하지만 파일 시스템을 추상화하므로 심볼릭 링크를 따르지 않습니다. sftp호스트에서 심볼릭 링크 생성을 지원합니다. 최소한 symlink 다운로드 하고 (symlink가 ~/etc-> 후행없이 /etc/수행 되는 경우) 어떻게되는지 확인해야합니다. 서버와 클라이언트의 FS에 따라 다릅니다. 이에 따라 원래 질문을 편집하십시오! get etc/
polemon

3

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

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를 제공합니다.


3

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

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

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

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

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


0

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


충분히 공정하고, 적어도 내가 시도한 것 같아요 :(
TheHidden
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.