Unterschiedlicher Hashwert großer rsync-Dateien unter CentOS und Ubuntu?

Unterschiedlicher Hashwert großer rsync-Dateien unter CentOS und Ubuntu?

Ich habe eine große Datei von Remote-CentOS auf lokales Ubuntu synchronisiert mit

rsync -avzP user@<remote-ip>:/path/to/file .

Es wurde berichtet, dass die Überweisung gut verlaufen sei:

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

Soweit ich weiß, überprüft rsync nach Abschluss der Übertragung automatisch mithilfe von Hash-Checks, ob die Übertragung erfolgreich war.

Aus Neugier habe ich MD5-Hashes auf CentOS und Ubuntu berechnet und diese sind unterschiedlich:

centos: 0faa300b7b0b81bfe65199da932eb6e2
ubuntu: f3a0fcc59516d4e68fd207bdbb1fc169

Beide Hashes werden wie folgt berechnet md5sum:

centos> md5sum --version
md5sum (GNU coreutils) 8.22

ubuntu> md5sum --version
md5sum (GNU coreutils) 8.25

Die Versionen sind also etwas unterschiedlich, aber kann das zu unterschiedlichen Hash-Werten führen?

Bearbeiten:

Hier sind ls -ldie Ausgaben:

centos: -rw-rw-r--.  1 username username 8217194015
ubuntu: -rw-rw-r--   1 username username 8217194015

Die Centos-Ausgabe enthält einen mysteriösen Punkt, von dem ich noch nie gehört habe. (Könnte das mit LVM zusammenhängen? Auf diesem Centos wird LVM verwendet.)

Bearbeiten 2:

md5sum -bAuch die Überprüfung führt zu unterschiedlichen Ergebnissen:

centos: 0faa300b7b0b81bfe65199da932eb6e2
ubuntu: 6d799f6981066d82c7f861576b4980e1

Welchen Hash-Algorithmus verwendet rsync?Laut Wikipediarsync verwendet md5, um zu überprüfen, ob der Block derselbe ist:

Der Empfänger teilt seine Kopie der Datei in Blöcke auf und berechnet für jeden Block zwei Prüfsummen: den MD5-Hash und eine schwächere, aber einfacher zu berechnende „gleitende Prüfsumme“. Er sendet diese Prüfsummen an den Absender. Der Absender berechnet schnell die gleitende Prüfsumme für jeden Block in seiner Version der Datei. Wenn sie sich unterscheiden, muss sie gesendet werden. Wenn sie gleich sind, verwendet der Absender den rechenintensiveren MD5-Hash, um zu überprüfen, ob die Blöcke gleich sind.

Antwort1

Hier liegt eine falsche Annahme vor:

Soweit ich weiß, überprüft rsync nach Abschluss der Übertragung automatisch mithilfe von Hash-Checks, ob die Übertragung erfolgreich war.

Rsync verwendet Prüfsummen, um zu bestimmen, ob eine Synchronisierung erforderlich ist. Rsync liest die erstellte Kopie jedoch nicht erneut, sondern verlässt sich darauf, dass der Kernel Fehler meldet. Die Schlussfolgerung ist also einfach: Die Dateien sind nicht identisch. Es könnte nur ein Bit sein, es könnten mehr sein. Wie groß die Abweichung ist, verrät Ihnen eine Prüfsumme nicht.

Antwort2

Der Punkt .bedeutet, dass die Datei einen SELinux-Kontext hat, wie jede Datei auf CentOS (und keine Datei auf Ubuntu), was in gewisser Weise verwirrend sein kann . Haben Sie versucht, mit switch md5sumzu laufen, um sicherzustellen, dass es nicht durch die „in Text“-Konvertierungen verstümmelt wird?md5sumb

verwandte Informationen