rsync: 심볼릭 링크 실제 경로 복사와 심볼릭 링크 재생성

rsync: 심볼릭 링크 실제 경로 복사와 심볼릭 링크 재생성

이제 다음 명령이 있습니다.

rsync --copy-links -r src dest

그러면 src에 있는 모든 심볼릭 링크의 개체 파일이 복사되고 dest에 해당 파일의 복사본이 작성됩니다.

내 질문은 - 새로운 대상(dest)으로 심볼릭 링크를 다시 만드는 방법이 있습니까?

나는 노력했다

rsync --links -r src dest

그러나 이것은 별 효과가 없는 것 같습니다.

내 src 디렉터리가 다음과 같다고 가정해 보겠습니다.

src/
  foo/
  bar/  # symlinked dir
  baz/

답변1

--links맞다. 그러나 이전에 사용한 적이 있다면 --copy-links대상에 실제 디렉터리(콘텐츠 포함)가 생성됩니다. 나중에 실행하면 --links이러한 디렉터리를 삭제하여 링크로 바꿀 수 없습니다.

$ rsync -r --copy-links src/ dest/ # creates a real directory in /dest
$ ls -l dest
drwxr-xr-x 2 user staff 4096 Dec 18 00:47 bar

지금 링크를 복사해 보세요...

$ rsync -r --links src/ dest/
cannot delete non-empty directory: bar
could not make way for new symlink: bar
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1052) [sender=3.0.9]

아아, 아직은 아닙니다. 먼저 대상 디렉터리를 삭제해야 합니다.

$ rm -rf dest/bar
$ rsync -r --links src/ dest/
$ ls -l dest
lrwxrwxrwx 1 user staff 6 Dec 18 00:52 bar -> ../bar

관련 정보