Md5sums diferentes para o mesmo conteúdo de alcatrão

12

Eu executei um teste criando dois tars do mesmo diretório (seus arquivos permaneceram inalterados), e descobri que seus md5sums eram diferentes. Eu suponho que há algum timestamp sendo incluído no cabeçalho do tar, mas não encontrei o caminho para substituí-lo. Meu sistema operacional é o Ubuntu 9.1. Alguma idéia?

Obrigado.

    
por xain 06.02.2010 / 14:32

3 respostas

9

Como Dennis apontou acima, é gzip. Parte do cabeçalho gzip é um tempo mod para o que está compactado no arquivo. Se você precisar de gzip, você pode compactar o tarfile como uma etapa extra fora do tar, em vez de usar o gzip interno do tar. O comando gzip tem um sinalizador para suprimir o salvamento do tempo de modificação.

tar -c ./bin |gzip -n >one.tgz
tar -c ./bin |gzip -n >two.tgz
md5sum one.tgz two.tgz

Isso não afetará os tempos dentro do tarfile, somente aquele no cabeçalho do gzip.

    
por 06.02.2010 / 17:17
4

Para criar um arquivo tar com uma soma de verificação consistente, basta preceder GZIP=-n da seguinte forma:

GZIP=-n tar -zcf myOutputTarball.tar /home/luke/directoryIWantToZip

Como isso funciona: O Tar pode aceitar as opções do gzip usando uma variável de ambiente GZIP temporária, como mostrado acima. Como Valter disse, o tar usa o gzip, que por padrão coloca um timestamp no arquivo. Isso significa que você obtém uma soma de verificação diferente quando você compacta os mesmos arquivos. A opção -n desabilita esse registro de data e hora.

    
por 09.05.2016 / 22:22
2

Eu também tive esse problema, para fazer o gzip não alterar o timestamp, use gzip -n

-n, --no-name não salva ou restaura o nome original e a data e hora

[valter.silva@alog ~]$ gzip --help
Usage: gzip [OPTION]... [FILE]...
Compress or uncompress FILEs (by default, compress FILES in-place).

Mandatory arguments to long options are mandatory for short options too.

  -c, --stdout      write on standard output, keep original files unchanged
  -d, --decompress  decompress
  -f, --force       force overwrite of output file and compress links
  -h, --help        give this help
  -l, --list        list compressed file contents
  -L, --license     display software license
  -n, --no-name     do not save or restore the original name and time stamp
  -N, --name        save or restore the original name and time stamp
  -q, --quiet       suppress all warnings
  -r, --recursive   operate recursively on directories
  -S, --suffix=SUF  use suffix SUF on compressed files
  -t, --test        test compressed file integrity
  -v, --verbose     verbose mode
  -V, --version     display version number
  -1, --fast        compress faster
  -9, --best        compress better
    --rsyncable   Make rsync-friendly archive

With no FILE, or when FILE is -, read standard input.

Report bugs to <[email protected]>.

Exemplo:

[valter.silva@alog ~]$ ls
renewClaroMMSCanaisSemanal.log.gz  s3

[valter.silva@alog ~]$ gunzip renew.log.gz 
[valter.silva@alog ~]$ gunzip s3/renew.log.gz 

[valter.silva@alog ~]$ md5sum renew.log 
d41d8cd98f00b204e9800998ecf8427e  renew.log

[valter.silva@alog ~]$ md5sum s3/renew.log 
d41d8cd98f00b204e9800998ecf8427e  s3/renew.log

[valter.silva@alog ~]$ gzip -n renew.log 
[valter.silva@alog ~]$ gzip -n s3/renew.log 

[valter.silva@alog ~]$ md5sum renew.log.gz 
7029066c27ac6f5ef18d660d5741979a  renew.log.gz

[valter.silva@alog ~]$ md5sum s3/renew.log.gz 
7029066c27ac6f5ef18d660d5741979a  s3/renew.log.gz
    
por 10.07.2013 / 15:39

Tags