
원격 Centos에서 로컬 우분투로 대용량 파일을 rsync했습니다.
rsync -avzP user@<remote-ip>:/path/to/file .
전송이 잘 진행되었다고 보고되었습니다.
sent 30 bytes received 257,293,476 bytes 1,296,188.95 bytes/sec
total size is 8,217,194,015 speedup is 31.94
내가 아는 한 rsync는 전송이 완료된 후 해시 확인을 통해 전송이 잘 되었는지 자동으로 확인합니다.
호기심 때문에 centos와 ubuntu에서 md5 해시를 계산했는데, 이것들은 다릅니다:
centos: 0faa300b7b0b81bfe65199da932eb6e2
ubuntu: f3a0fcc59516d4e68fd207bdbb1fc169
두 해시 모두 다음을 사용하여 계산됩니다 md5sum
.
centos> md5sum --version
md5sum (GNU coreutils) 8.22
ubuntu> md5sum --version
md5sum (GNU coreutils) 8.25
따라서 버전은 약간 다르지만 이로 인해 해시 값이 달라질 수 있습니까?
편집하다:
출력 은 다음과 같습니다 ls -l
.
centos: -rw-rw-r--. 1 username username 8217194015
ubuntu: -rw-rw-r-- 1 username username 8217194015
Centos 출력에는 들어본 적이 없는 신비한 점이 포함되어 있습니다. (lvm과 관련이 있을 수 있나요? lvm은 해당 centos에서 사용됩니다)
편집 2:
확인하면 md5sum -b
다른 결과도 발생합니다.
centos: 0faa300b7b0b81bfe65199da932eb6e2
ubuntu: 6d799f6981066d82c7f861576b4980e1
rsync는 어떤 해시 알고리즘을 사용합니까?위키피디아에 따르면rsync는 md5를 사용하여 청크가 동일한지 확인합니다.
수신자는 파일 복사본을 청크로 분할하고 각 청크에 대해 두 개의 체크섬, 즉 MD5 해시와 더 약하지만 계산하기 쉬운 '롤링 체크섬'을 계산합니다. 이 체크섬을 보낸 사람에게 보냅니다. 보낸 사람은 파일 버전의 각 청크에 대한 롤링 체크섬을 빠르게 계산합니다. 다르면 보내야 합니다. 동일한 경우 발신자는 계산 비용이 더 많이 드는 MD5 해시를 사용하여 청크가 동일한지 확인합니다.
답변1
여기에는 잘못된 가정이 있습니다.
내가 아는 한 rsync는 전송이 완료된 후 해시 확인을 통해 전송이 잘 되었는지 자동으로 확인합니다.
Rsync는 체크섬을 사용하여 동기화가 필요한지 결정합니다. 그러나 Rsync는 생성된 복사본을 다시 읽지 않으며 커널이 오류를 보고한다고 신뢰합니다. 따라서 결론은 간단합니다. 파일이 동일하지 않습니다. 단지 한 조각일 수도 있고 그 이상일 수도 있습니다. 얼마나 많은 불일치가 있는지, 체크섬으로는 알 수 없습니다.
답변2
점은 .
CentOS의 모든 파일(Ubuntu의 파일 없음)과 마찬가지로 파일에 SELinux 컨텍스트가 있음을 의미하므로 md5sum
어떤 방식으로든 혼동될 수 있습니다. "텍스트로" 변환으로 인해 문제가 발생하지 않도록 스위치를 md5sum
사용하여 실행하려고 했습니까 ?b