CentOS と Ubuntu で大きな rsync ファイルのハッシュ値が異なりますか?

CentOS と Ubuntu で大きな rsync ファイルのハッシュ値が異なりますか?

リモートのCentOSからローカルのUbuntuに大きなファイルを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 を使用してチャンクが同じかどうかを確認します。

受信者はファイルのコピーをチャンクに分割し、各チャンクに対して 2 つのチェックサム (MD5 ハッシュと、より弱いが計算が容易な「ローリング チェックサム」) を計算します。これらのチェックサムを送信者に送ります。送信者は、ファイルの各チャンクに対してローリング チェックサムをすばやく計算します。それらが異なる場合は、それを送信する必要があります。それらが同じである場合、送信者は、計算コストの大きい MD5 ハッシュを使用して、チャンクが同じであることを確認します。

答え1

ここに間違った仮定があります:

私の知る限り、rsync は転送が完了した後にハッシュ チェックを行って転送が正常に行われたかどうかを自動的に確認します。

Rsync は、同期が必要かどうかを判断するためにチェックサムを使用します。ただし、Rsync は作成されたコピーを再読み込みせず、カーネルがエラーを報告することを信頼します。したがって、結論は単純です。ファイルは同一ではありません。1 ビットだけの場合もあれば、それ以上の場合もあります。不一致がどの程度あるかは、チェックサムではわかりません。

答え2

ドットは.、CentOS 上のすべてのファイル (Ubuntu 上のファイルはありません) と同様に、ファイルに SELinux コンテキストがあることを意味し、何らかの形で混乱を招く可能性があります。スイッチを使用して実行し、「テキストへの」変換によってファイルが壊れないようにしmd5sumましたか?md5sumb

関連情報