rsync를 사용하여 더 작은 파일만 덮어쓰는 방법

rsync를 사용하여 더 작은 파일만 덮어쓰는 방법

rsync다음과 같이 재귀를 사용하여 디렉터리 복사를 시도했습니다 .

rsync -a /src/* /dst
  • /src포함하다sample.png (0.5MB)

  • /dst포함하다sample.png (1MB)

모두 동일한 타임스탬프를 갖습니다. 이제 명령을 실행하면 rsync물론 1MB가 sample.png0.5MB로 덮어쓰여지 sample.png는 것을 피하고 싶습니다.

rsync더 큰 파일만 복사해야 한다고 말할 수 있는 방법이 있나요 ?

답변1

rsync이 전송 조건은 기본적으로 지원되지 않지만 옵션이 있습니다효과적으로그래도 당신이 원하는 행동이 있습니다이는 효율적이지 않습니다.이 옵션의 의도된 사용을 어느 정도 확장합니다.따라서 주의해서 사용하고 프로덕션에 사용하기 전에 중요하지 않은 테스트 사례를 확인하세요..

이 옵션을 이라고 합니다 --append-verify.

rsync설명하기 위해 맨페이지를 인용하고 다음 --append옵션으로 시작합니다.

--append

이로 인해 rsync는 수신 측에 이미 존재하는 데이터가 송신 측의 파일 시작 부분과 동일하다고 가정하고 파일 끝에 데이터를 추가하여 파일을 업데이트합니다. 파일을 전송해야 하는데 받는 사람의 파일 크기가 보낸 사람의 파일 크기와 같거나 긴 경우 파일을 건너뜁니다..

즉, 이 --append옵션은 이름에서 알 수 있듯이 원본의 파일은 끝에 추가해야만 변경된다고 가정하고, 대상에 있는 파일보다 작은 원본의 파일은 건너뛰므로 파일을 덮어쓰지 않습니다. 대상에 더 작은 파일이 있는 소스에 있습니다.

해당 옵션의 내부 작동 방식을 완전히 확신할 수 없고 파일의 "추가된" 부분(즉, 이전 부분이 있는지 여부에 관계없이 마지막 바이트 다음 부분만 대상에 존재함)을 의미하기 때문입니다. 정말 똑같습니다) 사실 위 내용이 옮겨졌으니 추천드려요

  • use 는 --append-verify매뉴얼 페이지에 명시된 대로 파일의 첫 번째 부분에 차이가 있는 경우 전송 후 확인 중에 전체 파일 내용을 포함합니다(옵션선험적으로동일한 것으로 간주됩니다). 제가 이해한 바에 따르면 "추가" 부분만 처음에 실제로 전송되는 경우에도 유효성 검사가 고려됩니다.모든 콘텐츠파일의 경우, 파일이 실제로 "추가를 통해 커지는" 경우에만 동일했을 부분이 달라지며 전체 파일이 다시 전송되어 올바른 복사본이 생성됩니다. 이는 물론 불필요한 데이터 전송을 의미하므로 이러한 비효율성에 대해 경고합니다.

  • 필요한 파일에만 이 특정 옵션을 사용하십시오. 예에서는 sample.png철저하게 확인하십시오.진짜예상되는 작업을 수행하고 rsync"일반" 옵션을 사용하여 다른 모든 파일을 복사합니다.

관련 정보