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가 절대 경로가 있거나 원본 디렉토리를 가리키는 것을 가리키는 것은 무시 될 수 있습니다.
심볼 링크 이름을 알고 링크 및 대상 할 수 있습니다.
rsync -a 'symlink' .
realdir="$(basename "$(readlink -f 'symlink')")"
rsync -a "$realdir" .
첫 번째 rsync
symlink
만이 전송됩니다. 두 번째 명령은 실제 디렉토리 이름을 찾고 두 번째 rsync
디렉토리 내용을 전송합니다.
이것은 당신이 이것들이 'mydir'에있는 모든 것들이 있고, 당신은 한 곳에서 다른 곳으로 rsync 'mydir'에있는 경우에만 가능합니다. rsync는 다음과 같은 링크를 제외하고 제공하는 경로 외부에서 복사 할 수 없습니다. 예를 들어,
mydir/dirA ...
mydir/dirB ...
...