Controlla la validità del file gz


13

Come posso verificare la validità di un file gz, non ho l'hash del file, lo sto usando gzip -tma non restituisce alcun output.

Grazie

Risposte:


22

Il gzip -tcomando restituisce solo un codice di uscita alla shell che indica se il file ha superato o meno il test di integrità.

Esempio (in uno script):

if gzip -t file.gz; then
    echo 'file is ok'
else 
    echo 'file is corrupt'
fi

L'aggiunta -vlo farà effettivamente riportare il risultato con un messaggio.

Esempio:

$ gzip -v -t file.gz
file.gz:        OK

Quindi il file è ok. Corrompiamo il file (scrivendo il carattere 0nel byte 40 nel file) e riproviamo.

$ dd seek=40 bs=1 count=1 of=file.gz <<<"0"
1+0 records in
1+0 records out
1 bytes transferred in 0.000 secs (2028 bytes/sec)
$ gzip -v -t file.gz
file.gz:        gzip: file.gz: Inappropriate file type or format

L'integrità di un file rispetto alla sua compressione non garantisce che il contenuto del file sia quello che ritieni sia. Se hai un checksum MD5 (o un checksum simile) del file da chiunque lo abbia fornito, allora potresti ottenere un'ulteriore conferma che il file non è solo un gziparchivio valido , ma anche che il suo contenuto è quello che ti aspetti essere.


4

gzip -tnon ha alcun output, tranne il codice di ritorno, se è un file compresso gzip corretto.

Restituisce un errore solo se lo stai provando su qualcosa che non è un file compresso gzip:

steamsrv@leviathan:~$ gzip -t commands.txt

gzip: commands.txt: not in gzip format

Conclusione: il tuo file è quasi certamente un file compresso gzip. Quello che non posso dirti è se è il file esatto che pensi debba essere, ed è per questo che l'hash sarebbe utile ...

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.