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