동일한 크기의 파일을 건너뛰려면 rsync를 사용하세요.

동일한 크기의 파일을 건너뛰려면 rsync를 사용하세요.

나는 다음 명령을 사용하여 많은 수의 대용량 비디오 파일을 외부 드라이브에 복사하고 있습니다.

rsync -Ph --inplace /Volumes/Production/Prefix* Prefix

정전이 발생하여 복사가 중단되었습니다. rsync를 사용하면 다시 시작하는 것만으로도 문제가 없지만 문제는 원래 위치로 돌아가는 데 꽤 시간이 걸린다는 것입니다. 모든 파일을 살펴보고 전체 파일을 읽는 것처럼 보입니다. 속도는 다시 복사를 시작하는 지점에 도달할 때까지 평소 속도보다 약 3~5배 빠른 것으로 보고됩니다.

이 시간 동안 정확히 무엇을 하고 있나요? 전체 파일을 읽고 소스와 비교하고 있습니까? 아니면 뭔가 다른 멋진 일을 하고 있는 걸까요? rsync가 완료된 파일을 더 빠르게 건너뛰도록 하는 방법이 있습니까? 예를 들어 파일 크기가 다른 파일만 확인하도록 지시하시겠습니까?

답변1

문제 의 원인 -t-a-t이전의rsync 실행.

-t복사할 때 파일 수정 시간을 보존하기 위해 필요합니다. 즉, 일단 복사되면 대상 파일의 마지막 수정 시간은 소스 파일의 시간과 동일합니다. 이것이 없으면 후속 rsync 실행 시 대상 파일이 소스와 일치하는 것으로 간주되지 않고 항상 업데이트됩니다.

Rsync의 비교 동작

기본적으로 rsync는 마지막 수정 시간과 파일 크기가 소스 파일과 일치하는 경우 기존 대상 파일을 건너뜁니다.

이것으로부터 회복

그 동안 다른 소프트웨어가 대상 파일을 수정하지 않았을 것이라고 확신하고 다시 시작하려는 경우 이 --size-only옵션을 사용할 수 있습니다. 이는 파일 크기가 일치하는 경우 rsync가 마지막 수정 시간을 확인하지 않고 기존 대상 파일을 건너뛰도록 비교 동작을 수정합니다.

앞으로 겪게 될 문제는 디렉터리를 다시 동기화하려는 경우 파일 수정 시간을 일치시켜야 하거나 수정 시간을 무시하고 다른 사람이 수정하지 않은 파일을 신뢰해야 한다는 것입니다. 소프트웨어(크기를 변경하지 않는 방식으로).

옵션 설명

  • 기본 rsync 비교: 파일 크기와 마지막 수정 시간이 모두 일치하면 건너뜁니다.

  • --size-only: 파일 크기가 일치하면 건너뜁니다.

  • --ignore-times: 절대 건너뛰지 마세요. 파일 시간및 크기무시됩니다.

  • --checksum: 파일 크기가 일치하면 두 파일의 체크섬을 계산하고 일치하면 건너뜁니다.

옵션 --size-only을 사용하면 파일을 건너뛸 가능성이 높아지고, --ignore-times--checksum옵션을 사용하면 파일을 건너뛸 가능성이 줄어듭니다.

답변2

rsync옵션이 있습니다: --size-only원하는 것을 수행합니다.

답변3

Rsync는 기본적으로 파일의 모드 시간과 크기를 확인합니다. --checksum을 추가하면 전체 파일과 비교됩니다(예: 모드 시간 및 크기 일치에 관계 없음).

답변4

아카이브에 -a를 수행하지 않았으므로 시간에 따라 복사하지 않았으므로 타임스탬프 불일치로 인해 서로 다른 파일이라고 생각한 다음 전체 파일을 체크섬합니다.

타임스탬프가 일치할 수 있거나 일치해야 하는 복사본을 만드는 경우: 항상 -a.

지금은 (오래 전이지만) 추가해 볼 수 있습니다.--ignore-times

관련 정보