Valor hash diferente do arquivo rsynced grande no centos e no Ubuntu?

5

Eu criei um arquivo grande de centos remotos para o ubuntu local com

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

Informou que a transferência correu bem:

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

Até onde eu sei, o rsync verifica automaticamente se a transferência correu bem com as verificações de hash após a conclusão da transferência.

Por curiosidade eu calculei hashes md5 no centos e no Ubuntu, e estes são diferentes:

centos: 0faa300b7b0b81bfe65199da932eb6e2
ubuntu: f3a0fcc59516d4e68fd207bdbb1fc169

Ambos os hashes são calculados com md5sum :

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

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

Assim, as verificações são um pouco diferentes, mas isso pode levar a valores diferentes dos hashes?

Editar :

Aqui estão ls -l output:

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

A saída do Centos inclui um ponto misterioso que eu nunca ouvi falar. (poderia estar relacionado com lvm? lvm é usado nesses centos)

Editar 2 :

A verificação de md5sum -b leva também a resultados diferentes:

centos: 0faa300b7b0b81bfe65199da932eb6e2
ubuntu: 6d799f6981066d82c7f861576b4980e1

Qual algoritmo de hash o rsync usa? De acordo com a wikipedia , o rsync usa o md5 para verificar se o fragmento é o mesmo:

The recipient splits its copy of the file into chunks and computes two checksums for each chunk: the MD5 hash, and a weaker but easier to compute 'rolling checksum'. It sends these checksums to the sender. The sender quickly computes the rolling checksum for each chunk in its version of the file; if they differ, it must be sent. If they're the same, the sender uses the more computationally expensive MD5 hash to verify the chunks are the same.

    
por Adobe 17.12.2016 / 07:42

2 respostas

1

Há uma suposição errada aqui:

As far as I know rsync automatically verifies the transfer went well with hash checks after the transfer is completed.

O Rsync usa somas de verificação para determinar se uma sincronização é necessária. Mas, o Rsync não releia a cópia criada, ela confia no kernel para reportar erros. Então, a conclusão é simples: os arquivos não são idênticos. Poderia ser apenas um pouco, poderia ser mais. Quanta incompatibilidade existe, uma soma de verificação não diz a você.

    
por 13.09.2017 / 08:07
0

O ponto . significa que o arquivo tem contexto SELinux, como todo arquivo no CentOS (e nenhum arquivo no Ubuntu), o que pode confundir md5sum de alguma forma. Você tentou executar a opção md5sum with b para garantir que ela não seja distorcida pelas conversões "to-text"?

    
por 17.12.2016 / 09:32