Rsync는 변경된 파일만 복사합니다. 파일 수정 타임스탬프 무시

Rsync는 변경된 파일만 복사합니다. 파일 수정 타임스탬프 무시

다음 조건에서 rsync가 작동하도록 할 수 있습니까?

if len(f1) != len(f2) then rsync
if len(f1) == len(f2) and md5sum(f1) != md5sum(f2) then rsync

가장 가까운 옵션은 --checksum??


답변1

맨페이지 에서 가져옴 rsync:

설명

Rsync는 빠르고 매우 다양한 파일 복사 도구입니다. 로컬로, 원격 셸을 통해 다른 호스트로/에서 또는 원격 rsync 데몬으로/에서 복사할 수 있습니다. 이는 동작의 모든 측면을 제어하고 복사할 파일 세트를 매우 유연하게 지정할 수 있는 다양한 옵션을 제공합니다. 원본 파일과 대상에 있는 기존 파일의 차이점만 전송하여 네트워크를 통해 전송되는 데이터의 양을 줄이는 델타 전송 알고리즘으로 유명합니다. Rsync는 백업 및 미러링에 널리 사용되며 일상적인 사용을 위한 향상된 복사 명령으로 사용됩니다.

Rsync는 기본적으로 lqquick checkrq 알고리즘을 사용하여 전송해야 하는 파일을 찾습니다.크기나 마지막 수정 시간이 변경된 파일을 찾습니다.다른 보존된 속성(옵션에서 요청한 대로)의 모든 변경 사항은 빠른 검사에서 파일의 데이터를 업데이트할 필요가 없음을 나타내는 경우 대상 파일에 직접 적용됩니다.

따라서 설명에서 볼 수 있듯이 기본 동작은 다음과 같습니다.

  • 로컬 또는 원격으로 작동하는 복사 도구
  • 다양한 옵션
  • 기본적으로 델타 전송 알고리즘은 네트워크 사용량을 줄이기 위해 서로 다른 파일 세트만 전송합니다.
  • 미러링 및 백업에 널리 사용되는 도구
  • 조건 1에서 원하는 작업을 수행하는 checkrq 알고리즘: if len(f1) != len(f2) then rsync
  • 대상은 옵션이 전달되지 않은 경우 영향을 받는 대상입니다.

이제 체크섬과 관련된 옵션을 찾는 일만 남았습니다. 매뉴얼에서 검색하기:

-c, --checksum
   This changes the way rsync checks if the files have been changed and are in
   need of a transfer. Without this option, rsync uses a lqquick checkrq that
   (by default) checks if each file's size and time of last modification match
   between the sender and receiver. This option changes this to compare a 128-
   bit checksum for each file that has a matching size. Generating the checksums
   means that both sides will expend a lot of disk I/O reading all the data in
   the files in the transfer (and this is prior to any reading that will be
   done to transfer changed files), so this can slow things down significantly.

에 대한 설명은 --checksum정확히 당신이 원하는 것입니다 if len(f1) == len(f2) and md5sum(f1) != md5sum(f2) then rsync. 각 크기와 일치하는 파일에 대해 128비트 체크섬을 수행합니다.

하지만 이 옵션을 사용하면 상황에 따라 I/O가 크게 늘어나므로 주의하세요.

관련 정보