O gzip adiciona integridade / crc check a um .tar?

9

Eu executo comandos:

tar -cf myArchive.tar myDirectory/
gzip myArchive.tar

copiei o arquivo em várias mídias não confiáveis e depois descompactei-o usando:

tar -xzf myArchive.tar.gz

O fato de eu ter comprimido a tar-ball, irá de alguma forma garantir a integridade, ou pelo menos um CRC do conteúdo descompactado?

    
por Aksel Willgert 09.10.2014 / 11:39

5 respostas

10

tar em si não anota uma soma de verificação para comparação posterior. Se você gzip o tar arquivar, você pode ter essa funcionalidade.

tar usa compress . Se você usar o sinal -Z ao criar o arquivo tar usará o programa compress ao ler ou gravar o arquivo. Na% man_de% manpage:

The standard compress format was not designed to allow consistency checks.

Mas você pode usar o parâmetro gzip . Então -z lê e grava o arquivo através de tar . E gzip escreve uma soma de verificação crc. Para exibir essa soma de verificação, use esse comando:

$ gzip -lv archive.tar.gz
method  crc     date  time           compressed        uncompressed  ratio uncompressed_name
defla 3f641c33 Sep 25 14:01               24270              122880  80.3% archive.tar

Na% man_de% manpage:

When using the first two formats (gzip or zip is meant), gunzip checks a 32 bit CRC.

    
por 09.10.2014 / 12:10
5

Sim, o formato de arquivo gzip contém uma soma de verificação CRC-32 que pode ser usada para detectar se o arquivo foi corrompido.

É claro que, enquanto a soma de verificação permite que o gzip diga que o arquivo está corrompido, ele não faz nada para ajudá-lo a recuperar os dados dentro do arquivo. Assim, é mais útil para verificar se um arquivo que você acabou de baixar da web foi baixado corretamente.

Se você estiver realmente preocupado em armazenar ou transmitir seus arquivos por mídia não confiável, convém usar um formato de arquivo como par que realmente fornece correção de erros além da detecção de erros. É claro que a desvantagem desses formatos é que a redundância necessária para a correção de erros aumenta o tamanho do arquivo.

    
por 09.10.2014 / 16:43
3

tar não tem uma verificação de integridade. Exemplo:

$ echo JJJJJJJJJJJJJJJJJJ > b
$ tar cvf a.tar b
$ sed -i s/JJJJJJJJJJJJJJJJJJ/tttttttttttttttttt/g a.tar
$ tar xvf a.tar
$ cat b

tttttttttttttttttt

Veja, o conteúdo do arquivo a.tar foi alterado, então o arquivo b tem conteúdo completamente diferente, mas o tar não percebeu isso. Isso vale para qualquer tar, incluindo tar-1.28 (mais recente) com ambos os formatos de tar --format=gnu --format=posix . O comando pax (leitor de tar alternativo) pax -r < a.tar também não percebe alterações no arquivo.

    
por 16.05.2015 / 22:10
2

Se o tar encontrar erros ao descompactar, ele imprimirá uma mensagem e sairá com um valor de saída diferente de zero. Esse comportamento é independente do algoritmo de compactação usado depois que o arquivo tar foi criado.

Se você quiser verificar se o arquivo foi enviado com êxito ao destino por um link não confiável, crie uma soma md5 do arquivo antes de enviar e verifique a soma md5 após a recepção.

    
por 09.10.2014 / 11:56
-1

O pacote PKZip (win / dos) vem com um programa chamado PKZipFix que pode recuperar arquivos de arquivos danificados. Eu usei esse utilitário no passado, ele pode recuperar arquivos de arquivos moderadamente danificados que não seriam descompactados.

    
por 09.10.2014 / 16:43