Gzip aggiunge integrità / controllo crc a un .tar?


12

Eseguo i comandi:

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

quindi copio il file su molti supporti inaffidabili e successivamente lo scompatto usando:

tar -xzf myArchive.tar.gz

Il fatto che ho compresso la tar-ball, garantirà in qualche modo l'integrità o almeno un CRC del contenuto non compresso?

Risposte:


15

tardi per sé non annota un checksum per un successivo confronto. Se sei gzipl' tararchivio puoi avere quella funzionalità.

tarusi compress. Se si utilizza il -Zflag durante la creazione dell'archivio, tarverrà utilizzato il compressprogramma durante la lettura o la scrittura dell'archivio. Dalla gzipmanpage:

Il formato di compressione standard non è stato progettato per consentire controlli di coerenza.

Ma puoi usare il -zparametro Quindi tarlegge e scrive l'archivio gzip. E gzipscrive un checksum crc. Per visualizzare quel checksum usa quel 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

Dalla gzipmanpage:

Quando si utilizzano i primi due formati ( si intende gzip o zip ), gunzip controlla un CRC a 32 bit.


5

Sì, il formato del file gzip contiene un checksum CRC-32 che può essere utilizzato per rilevare se l'archivio è stato danneggiato.

Naturalmente, mentre il checksum lascia che gzip ti dica che l'archivio è corrotto, in realtà non fa nulla per aiutarti a recuperare i dati all'interno dell'archivio. Pertanto, è utile soprattutto per cose come verificare che un archivio appena scaricato dal Web sia stato scaricato correttamente.

Se sei effettivamente preoccupato di archiviare o trasmettere i tuoi archivi su supporti inaffidabili, potresti prendere in considerazione l'uso di un formato di archivio come par che in realtà fornisce la correzione degli errori oltre al rilevamento degli errori. Naturalmente, il lato negativo di tali formati è che la ridondanza necessaria per la correzione degli errori aumenta in qualche modo necessariamente la dimensione del file.


4

tarnon ha un controllo di integrità. Esempio:

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

tttttttttttttttttt

Vedi, il contenuto a.tardell'archivio è cambiato, quindi il file bha un contenuto completamente diverso, ma tar non l'ha notato. Questo vale per qualsiasi tar, incluso tar-1.28 (più recente) con entrambi i formati tar --format=gnu --format=posix. Il paxcomando (alternativo lettore tar) pax -r < a.tarinoltre non nota le modifiche all'archivio.


2
L'OP sembra essere consapevole (o almeno sospetto) che tar(almeno senza l' -zopzione) non esegue il controllo dell'integrità. Inoltre, la risposta accettata afferma questo. La domanda è: gzip(o l'uso -zdell'opzione) si aggiunge il controllo di integrità?
G-Man dice "Reinstate Monica"

G-Man corretto, questa potrebbe essere una risposta accettabile se includesse anche la parte gzip e dimostra che gzip rileva che il contenuto è cambiato.
Aksel Willgert,

2

Se tar rileva errori durante il disimballaggio, stamperà un messaggio e uscirà con un valore di uscita diverso da zero. Questo comportamento è indipendente dall'algoritmo di compressione utilizzato dopo la creazione del file tar.

Se si desidera verificare che il file sia stato inviato correttamente alla destinazione tramite un collegamento non affidabile, quindi creare una somma md5 del file prima di inviare e verificare la somma md5 dopo la ricezione.


se sono interessato solo all'integrità del contenuto non compresso. md5 sul tar non aggiunge nulla in più rispetto al tar che fa durante il disimballaggio?
Aksel Willgert,

L'integrità del contenuto all'interno dell'archivio tar è curata da tarsola. È possibile aggiungere un ulteriore livello, se necessario: Se l'integrità del file tar è verificata, anche il contenuto all'interno dell'archivio tar è OK. Ma tutto ciò dovrebbe essere curato dal protocollo utilizzato per trasferire i dati in primo luogo.
Jan

-1

Il pacchetto PKZip (win / dos) viene fornito con un programma chiamato PKZipFix in grado di recuperare file da archivi danneggiati. Ho usato questa utility in passato, può recuperare file da archivi moderatamente danneggiati che non si decomprimerebbero.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.