![rsync를 사용하여 심볼릭 링크와 그것이 가리키는 위치를 복사합니다.](https://linux55.com/image/41934/rsync%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%8B%AC%EB%B3%BC%EB%A6%AD%20%EB%A7%81%ED%81%AC%EC%99%80%20%EA%B7%B8%EA%B2%83%EC%9D%B4%20%EA%B0%80%EB%A6%AC%ED%82%A4%EB%8A%94%20%EC%9C%84%EC%B9%98%EB%A5%BC%20%EB%B3%B5%EC%82%AC%ED%95%A9%EB%8B%88%EB%8B%A4..png)
에 의해 수행될 필요는 없지만 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" .
첫 번째 명령 rsync
은 symlink
.두 번째 명령은 실제 디렉터리 이름을 찾고 두 번째 명령은 rsync
디렉터리 내용을 전송합니다.
답변2
이는 "mydir"에 있고 "mydir"을 한 위치에서 다른 위치로 동기화하려는 경우에만 가능합니다. Rsync는 사용자가 제공한 경로 외부로 복사할 수 없습니다(아래 링크 제외). 예를 들어
mydir/dirA ...
mydir/dirB ...
...