rsync를 사용하여 가리키는 심볼릭 링크 AND 할 수

에 의해 수행 될 필요는 없지만이 작업을 수행 rsync하기 위해 스크립트를 작성할 필요가 없으며 rsync내가 원하는 것에 매우 가깝습니다.

rsync -a(또는 -l)는 심볼릭 링크를 보존 할 수 있으며 심볼릭 링크 -L를 역 참조하여 일반적인 파일 / 디렉토리처럼 복사 할 수 있습니다. 그러나 심볼릭 링크를 유지하고 링크가 가리키는 파일 / 디렉토리를 복사 할 수 있습니까?

다음은 예입니다. 이 폴더 계층 구조가 있다고 가정 해보십시오.

dirA/link_to_file -> ../dirB/file
dirA/link_to_dir -> ../dirC
dirB/file
dirB/not_this_file
dirC/file
dirC/file2
dirD/others

그리고 내가 할 때 rsync -aR dirA dest(또는 다른 것), 나는 이것들이 정확하게 나타나기를 원합니다 dest:

dirA/link_to_file -> ../dirB/file
dirA/link_to_dir -> ../dirC
dirB/file
dirC/file
dirC/file2

이 가능 rsync합니까? 감사합니다.

절대 경로가 있거나 소스 디렉토리 외부를 가리키는 심볼릭 링크를 무시할 수 있다고 가정합니다.



답변

심볼릭 링크 이름을 알고 링크대상 을 전송하려는 경우 다음을 수행 할 수 있습니다.

rsync -a 'symlink' .
realdir="$(basename "$(readlink -f 'symlink')")"
rsync -a "$realdir" .

첫 번째 rsyncsymlink. 두 번째 명령은 실제 ​​디렉토리 이름을 찾고 두 번째 명령은 rsync디렉토리 내용을 전송합니다.


답변

이것들이 모두 ‘mydir’에 있고 한 곳에서 다른 곳으로 ‘mydir’을 rsync 해야하는 경우에만 가능합니다. Rsync는 사용자가 제공 한 경로 외부를 복사 할 수 없습니다 (다음 링크 제외). 예 :

mydir/dirA ...
mydir/dirB ...
...


답변