A diferença nos arquivos de saída provavelmente NÃO é devida ao método de compactação. Por padrão, o tar GNU usa o modo padrão GZIP deflate . Um motivo para a diferença está no formato do arquivo compactado GZIP.
A estrutura dos primeiros 8 bytes do cabeçalho do GZIP é a seguinte
OFFSET SIZE VALUE COMMENT
0 1 0x1F First "magic" id
1 1 0x8B Second "magic" id
2 1 CM Compression method
3 1 FLAGS 8-bit flag register
4 4 MTIME Object modification time
O problema é com o campo MTIME
. Para dados provenientes de um pipe, esse é o valor do tempo atual do Unix (segundos desde 1º de janeiro de 1970). Portanto, dois arquivos compactados idênticos criados com pelo menos um segundo intervalo um do outro serão diferentes.
Tente executar tar -cvzf
duas vezes nos mesmos dados e compare os resultados. Os resultados serão diferentes no quinto byte, o byte mais baixo do valor do registro de data e hora.
$ tar czvf test1.tgz tmp/ ; sleep 2 ; \
tar czvf test2.tgz tmp/ ; md5sum test1.tgz test2.tgz
tmp/
tmp/test
tmp/
tmp/test
23d46f62dd4a9a0851279df7fe15842e test1.tgz
c8ae65026a5f771c63acf87a18f7379c test2.tgz