rsync는 두 로컬 드라이브 간에 복사된 파일을 확인합니까?

rsync는 두 로컬 드라이브 간에 복사된 파일을 확인합니까?

한 로컬 드라이브에서 다른 드라이브로 많은 수의 파일을 복사하고 싶습니다.

rsync는 파일을 네트워크를 통해 원격 시스템으로 보낼 때 파일의 체크섬 비교를 수행한다는 것을 읽었습니다.

  1. 두 로컬 드라이브 간에 파일을 복사할 때 rsync가 비교됩니까?

  2. 그것이 검증된다면 - 안전한 내기입니까? 아니면 바이트 단위로 비교하는 것이 더 낫습니까?

답변1

rsync는 항상 체크섬을 사용하여 파일이 올바르게 전송되었는지 확인합니다. 대상 파일이 이미 존재하는 경우 수정 시간과 크기가 소스 파일과 일치하면 rsync는 파일 업데이트를 건너뛸 수 있지만, rsync가 데이터를 전송해야 한다고 결정하면 체크섬언제나rsync 프로세스 간에 전송되는 데이터를 보내고 받는 데 사용됩니다. 이는 수신된 데이터가 네트워크를 통한 바이트 수준 비교의 과도한 오버헤드 없이 높은 확률로 전송된 데이터와 동일한지 확인합니다.

파일 데이터를 받은 후 rsync는 커널이 쓰기가 성공했다고 표시하면 데이터가 손상 없이 디스크에 기록될 것이라고 믿고 데이터를 파일에 씁니다. rsync는 데이터를 다시 읽지 않고 추가 검사로 알려진 체크섬과 비교하지 않습니다.

인증 자체의 경우 프로토콜 30 이상(3.0.0에서 처음 지원됨)의 경우 rsync는 다음을 사용합니다.MD5. 이전 프로토콜의 경우 사용되는 체크섬은 다음과 같습니다.MD4.

MD5 및 MD4는 오랫동안 보안 암호화 해시에 더 이상 사용되지 않는 것으로 간주되어 왔지만 여전히 파일 손상을 확인하는 데는 충분합니다.

출처: 확인을 위한 매뉴얼 페이지 및 rsync 소스 코드 보기.

답변2

rsync하다아니요로컬 파일 사본의 사후 복사 검증. 다음을 사용하여 대용량 파일을 느린(예: USB) 드라이브에 복사 rsync한 다음 동일한 파일을 복사하여 그렇지 않은지 확인할 수 있습니다 cp.

time rsync bigfile /mnt/usb/bigfile

time cp bigfile /mnt/usb/bigfile

두 명령 모두 거의 동일한 시간이 걸리므로 rsync체크섬을 수행하는 것은 느린 디스크에서 대상 파일을 다시 읽는 것과 관련되므로 불가능합니다.

불행하게도 이 man페이지에는 이에 대한 오해의 소지가 있습니다. 나는 또한 이것을 확인했습니다 strace. 복사가 완료된 후에는 대상 파일에 대한 호출이 이루어지지 rsync않으므로 read()체크섬을 수행할 수 없습니다. 다음을 통해 확인할 수도 있습니다 iotop. 동시 읽기 및 쓰기(소스에서 대상으로 복사)를 확인한 rsync후 종료됩니다. 무결성을 확인하는 경우 읽기 전용 단계가 있습니다.

답변3

rsync체크섬 비교 수행앞으로기존 콘텐츠가 중복되지 않도록 복사(경우에 따라)합니다. 체크섬 비교의 목적은 복사가 성공했는지 확인하는 것이 아닙니다. 이는 파일 시스템 드라이버, 디스크 드라이버, 네트워크 드라이버 등 기본 인프라의 작업입니다. 이와 같은 단일 앱은 rsync이런 말도 안되는 일을 귀찮게 할 필요가 없습니다. 수행해야 할 모든 rsync작업은 시스템 호출의 반환 값을 확인하여 오류가 없는지 확인하는 것입니다.

답변4

rsync를 사용하여 복제본의 무결성 확인

이 테스트가 드라이브 미디어에서 파일을 물리적으로 다시 읽는다는 것을 보장하려면 이 테스트를 실행하기 전에 두 드라이브의 전원을 모두 끄고 다시 시작하는 것이 좋습니다. 이렇게 하면 내부 휘발성 캐시가 지워집니다.

Linux를 다시 시작하지 않는 경우 최소한 캐시(*) 그리고:

sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'

그런 다음 두 트리를 다시 읽고 체크섬을 비교합니다.

rsync --dry-run --checksum --itemize-changes --archive SRC DEST

최신 rsync 체크섬은 128비트인 MD5를 사용합니다. 단일 파일에서 오류를 감지하지 못할 확률은 매우 낮습니다(일부 논의여기) 그러나 불가능하지는 않습니다.

관련 정보