rsync --compare-dest 작동 방식

rsync --compare-dest 작동 방식

비슷한 질문이 있는 것으로 알고 있습니다.여기, 그러나 허용되는 답변은 rsync와 관련이 없으며 제 경우에는 OP 솔루션이 작동하지 않습니다.

CentOS 저장소를 저장소의 디스크 백업과 비교하여 로컬 저장소와 다른 모든 업데이트를 얻으려고 합니다.

rsync -avh --dry-run --compare-dest=/run/media/user/centos6/updates/x86_64/Packages /home/REPOS/6/updates/x86_64/Packages/ updates

그러나 시험 실행 결과 새 패키지뿐만 아니라 모든 패키지가 전송되는 것으로 나타났습니다.

저장소에서 디스크로 복사한 것처럼 다른 시험 실행을 수행하여 새 패키지만 전송합니다.

rsync -avh --dry-run /home/REPOS/6/updates/x86_64/Packages/ /run/media/djones/centos6/updates/x86_64/Packages

따라서 rsync는 분명히 새 파일을 구별할 수 있지만 어떤 이유로 비교 대상 옵션이 여전히 작동하지 않는 것 같습니다.

빠르고 더러운 해결책은 두 번째 명령을 사용하여 파일 목록을 덤프한 다음 rsync에 공급하는 것입니다. 하지만 저는 정말로 "올바른" 방식으로 하고 싶습니다.

답변1

나도 같은 문제를 겪었습니다. 이렇게 해야 합니다.

rsync -avh --dry-run                                          \
      --compare-dest=/run/media/user/centos6/updates/x86_64/  \
      /home/REPOS/6/updates/x86_64/Packages                   \
      /path/to/updates

노트 --compare-dest소스 폴더의 상위 폴더입니다 . 소스 폴더 끝에 Packages넣지 마세요 !/

답변2

다음과 같은 것이 필요합니다. ( rsync --compare-dest=$local_repo/ $centos_repo/ $differences/ 폴더를 변수로 정의하거나 변수를 경로로 변경합니다. 경로는 /로 끝나야 합니다.) $differences현재 데이터 등으로 변경할 수도 있습니다.

centos_repo와 local_repo(centos_repo가 ​​소스) 사이의 폴더 내의 차이점을 차이점 폴더에 복사합니다. 전체 디렉토리 트리를 생성하지만 diff에서 변경된 파일만 삽입합니다.


누구든지 이것을 백업용으로 사용하는 경우 소스(centos_repo)에서 삭제되고 비교(local_repo)에 있는 파일은 diff에 복사되지 않는다는 점을 기억하십시오.

답변3

rsync는 파일이 "동일"한지 결정할 때 내용만 확인하지 않습니다. 제대로 작동하게 하려면 때때로 "--no-times"(한 번은 효과가 있었습니다) 또는 "--no-perms", "--no-owner", "--no" 등 플래그 -group을 사용해야 합니다. "--체크섬" 등

(https://askubuntu.com/questions/1139188/rsync-compare-dest-does-not-work)

관련 정보