it-gundan.com

심볼릭 링크를 복사하고 rsync를 사용하는 위치

rsync에 의해 수행 할 필요는 없지만이 작업을 수행하기 위해 스크립트를 작성하지 않아도 좋을 것입니다. rsync은 내가 원하는 것과 매우 가깝습니다.

rsync -a (또는 -l)는 심볼릭 링크를 보존 할 수 있으며, -L는 심볼릭 링크를 다루고 일반 파일/dir 인 것처럼 복사 할 수 있습니다. 그러나 Symlink를 유지하고 링크가 가리키는 파일/디렉토리를 복사 할 수도 있습니다.

다음은 예제입니다. 이 폴더 계층 구조가 있습니다.

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에서 가능합니다. 감사합니다.

Symlinks가 절대 경로가 있거나 원본 디렉토리를 가리키는 것을 가리키는 것은 무시 될 수 있습니다.

11
Wei-Yin

심볼 링크 이름을 알고 링크대상 할 수 있습니다.

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

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

2
user201564

이것은 당신이 이것들이 'mydir'에있는 모든 것들이 있고, 당신은 한 곳에서 다른 곳으로 rsync 'mydir'에있는 경우에만 가능합니다. rsync는 다음과 같은 링크를 제외하고 제공하는 경로 외부에서 복사 할 수 없습니다. 예를 들어,

mydir/dirA ...
mydir/dirB ...
...
0
xenoterracide