rsync --recursive --ignore-existing foo bar
이름이 큰 디렉토리 트리에 대해 복사 명령을 실행 중인데 foo
명령이 중간에 중단되었다고 가정해 보겠습니다 . 예를 들어, 대상 시스템의 갑작스러운 정전으로 인해.
위 명령을 다시 실행하면 이미 존재하는 파일/디렉토리에 대해 많은 시간을 절약할 수 있습니다.완전히대상에 복사합니다 bar
. 하지만 복사 중인 파일은 어떻게 되나요? 아마도 파일이 불완전/손상된 상태로 대상에 존재합니까? 물론 단순히 "완성된 파일"이라고 무시하는 것은 매우 바람직하지 않습니다.
rsync가 지침 없이 이(극단적인 런타임) 시나리오를 지능적으로 처리할 수 있습니까? (그렇다면 어떻게?) 아니면 더 많거나 다른 표시를 통해 그렇게 하도록 구체적으로 지시된 경우에만?
실망스럽게도 이 사이트의 매뉴얼 페이지나 모호하게 관련된 질문이나 답변 중 어느 것도 이 매우 중요한 세부 사항을 명확한 방식으로 다루지 않는 것 같습니다. (보기에 안 좋으셨다면 죄송합니다.)
답변1
이 -c
옵션을 사용하면 날짜와 크기 대신 체크섬을 계산하고 비교하여 rsync 건너뛰기 파일을 만들 수 있습니다.
-c, --checksum
skip based on checksum, not mod-time & size
그러면 잘못된 내용이 포함된 모든 파일이 다시 복사됩니다.
이 --ignore-existing
플래그도 제거해야 합니다. 그렇지 않으면 대상에 이미 존재하는 파일이 전송되지 않습니다.