rsync를 사용하여 심볼릭 링크와 그것이 가리키는 위치를 복사합니다.

rsync를 사용하여 심볼릭 링크와 그것이 가리키는 위치를 복사합니다.

에 의해 수행될 필요는 없지만 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? 감사해요.

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

답변1

심볼릭 링크 이름을 알고 전송하고 싶은 경우협회그리고표적당신은 할 수 있습니다:

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

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

답변2

이는 "mydir"에 있고 "mydir"을 한 위치에서 다른 위치로 동기화하려는 경우에만 가능합니다. Rsync는 사용자가 제공한 경로 외부로 복사할 수 없습니다(아래 링크 제외). 예를 들어

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

관련 정보