에 의해 수행 될 필요는 없지만이 작업을 수행 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" .
첫 번째 rsync
는 symlink
. 두 번째 명령은 실제 디렉토리 이름을 찾고 두 번째 명령은 rsync
디렉토리 내용을 전송합니다.
답변
이것들이 모두 ‘mydir’에 있고 한 곳에서 다른 곳으로 ‘mydir’을 rsync 해야하는 경우에만 가능합니다. Rsync는 사용자가 제공 한 경로 외부를 복사 할 수 없습니다 (다음 링크 제외). 예 :
mydir/dirA ...
mydir/dirB ...
...