rsync가 링크를 통해 디렉터리를 복사할 수 있나요?

rsync가 링크를 통해 디렉터리를 복사할 수 있나요?

디렉터리를 복사해야 하는 다음과 같은 시나리오가 있습니다. 때로는 링크일 수도 있고 때로는 같은 이름을 가진 디렉터리일 수도 있습니다. 예를 들어 이것이 초기 설정이라고 가정합니다.

소스: /workspace/test/source/dir1 -> /tmp/test1

대상: /workspace/test/dest/dir1 -> /tmp/test1

이제 소스에서 링크를 제거하고 동일한 이름의 폴더를 생성한다고 가정하면 다음과 같습니다.

소스: /workspace/test/source/dir1

대상: /workspace/test/dest/dir1 -> /tmp/test1

지금 내가 하고 싶은 것은 rsync를 사용하여 복사하는 것입니다.실제 폴더링크를 "재정의"하여 다음과 같이 만듭니다.

소스: /workspace/test/source/dir1

대상:/작업 공간/테스트/dest/dir1

rsync를 통해 이를 수행할 수 있는 방법이 있습니까? 한 수준 위의 rsync, 즉 /workspace/test/source를 사용하면 작동한다는 것을 알고 있습니다. 불행히도 가장 낮은 수준의 rsync를 사용해야 합니다.

당신의 답변에 감사드립니다.

답변1

이것이 기본 동작입니다 rsync.

## Preamble
$ cd /tmp
$ mkdir src dst stuff
$ touch stuff/{a,b,c}
$ ( cd src && ln -s /tmp/stuff dir1 )
$ ( cd dst && ln -s /tmp/stuff dir1 )

## Symlinks are retained
$ cd /tmp
$ rsync -avv src/ dst/

## Change scenario
$ ls -l src
$ rm src/dir1 && cp -a /tmp/stuff src/dir1

## Symlinks are replaced according to the source
$ cd /tmp
$ rsync -avv src/ dst/
$ ls -l dst

관련 정보