Por que estou obtendo somas de verificação SHA-1 diferentes para tar de backups mongodump idênticos?

3

Estou tentando fazer backup do meu banco de dados MongoDB e verificar as alterações com uma soma de verificação SHA-1. O problema é que a soma de verificação não é a mesma.

$ mongodump --quiet --db backup --out .
$ tar -cf backup1.tar backup
$ rm -r backup
$ sha1sum backup1.tar
d9519a5183fb797639af583738e292527c667420  backup1.tar

$ mongodump --quiet --db backup --out .
$ tar -cf backup2.tar backup
$ rm -r backup
$ sha1sum backup2.tar
f5c9e3e99e857a88052e9121a9eca61c40909c07  backup2.tar

Tenho certeza de que o banco de dados não foi atualizado:

$ mongodump --quiet --db backup --out b1
$ mongodump --quiet --db backup --out b2
$ diff -r b1 b2
    
por AoEmaster 08.02.2016 / 11:44

1 resposta

6

Esse problema não é específico do MongoDB. Como a maioria dos programas para arquivamento de arquivos, o formato tar armazena os metadados sobre os arquivos arquivados , incluindo os timestamps. Se você fizer um backup de banco de dados em dois momentos diferentes, o conteúdo do backup será idêntico, mas os metadados não serão.

Para verificar se há alterações nos arquivos de dados reais, você deve calcular somas de verificação antes de tarring e incluí-las no arquivo:

 mongodump --quiet --db backup --out .
 sha1sum backup/* > backup/sha1.txt
 tar -cf backup.tar backup

Você pode então diferenciar arquivos de soma de verificação para determinar se dois backups possuem dados idênticos:

$ diff -q backup/sha1.txt backup2/sha1.txt
Files backup/sha1.txt and backup2/sha1.txt differ

Com as somas de verificação individuais, você também pode ver exatamente quais arquivos foram alterados:

$ diff backup/sha1.txt backup2/sha1.txt
3,4c3,4
< b8e37a70f4dd7a8265a9e030edec1251224957dc  backup/bacon.bson
< 9fabdb53acb5d3261fa973325c52abdd5cade6ff  backup/bacon.metadata.json
---
> 96d6e9de8885e3f24a98148f8b8630b843882c4e  backup/bacon.bson
> a3cd2cfe5b088c2033eb5e292fcbf8b39be65727  backup/bacon.metadata.json
    
por 19.02.2016 / 01:43