Wie zu überprüfen, ob ein Unix tar.gz-Datei eine gültige Datei ist ohne zu Dekomprimieren?

StackOverflow https://stackoverflow.com/questions/2001709

  •  18-09-2019
  •  | 
  •  

Frage

Ich habe die Frage Wie zu bestimmen, ob Daten gefunden ist gültig tar-Datei ohne Datei , aber ich habe mich gefragt: gibt es eine fertige Kommandozeilen-Lösung

?
War es hilfreich?

Lösung

Was ist nur eine Auflistung der Tarball bekommen und die Ausgabe, anstatt Dekomprimieren der Datei wegzuwerfen?

tar -tzf my_tar.tar.gz >/dev/null

Herausgegeben als pro Kommentar. Dank zrajm!

Bearbeiten per Kommentar. Dank Gefrorene Flamme! Dieser Test bedeutet in keiner Weise die Integrität der Daten. Weil es als Bandarchiv Dienstprogramm die meisten Implementierungen von Teer wurde entwickelt werden mehrere Kopien derselben Datei erlauben!

Andere Tipps

Sie können auch Inhalte von * .tag.gz Datei überprüfen pigz (parallel gzip) unter Verwendung der Archivprüfung Speedup:

pigz -cvdp number_of_threads /[...]path[...]/archive_name.tar.gz | tar -tv > /dev/null

Ich habe den folgenden Befehl ausprobiert und sie funktionieren gut.

bzip2 -t file.bz2
gunzip -t file.gz

Wir können jedoch fanden diese zwei Befehle sind zeitaufwendig. Vielleicht brauchen wir etwas mehr schnellen Weg, die intakten der Kompresse Dateien zu bestimmen.

Eine nette Option ist tar -tvvf <filePath> zu verwenden, die eine Zeile hinzufügt, der die Art der Datei meldet.

Beispiel in einer gültigen TAR-Datei:

> tar -tvvf filename.tar 
drwxr-xr-x  0 diegoreymendez staff       0 Jul 31 12:46 ./testfolder2/
-rw-r--r--  0 diegoreymendez staff      82 Jul 31 12:46 ./testfolder2/._.DS_Store
-rw-r--r--  0 diegoreymendez staff    6148 Jul 31 12:46 ./testfolder2/.DS_Store
drwxr-xr-x  0 diegoreymendez staff       0 Jul 31 12:42 ./testfolder2/testfolder/
-rw-r--r--  0 diegoreymendez staff      82 Jul 31 12:42 ./testfolder2/testfolder/._.DS_Store
-rw-r--r--  0 diegoreymendez staff    6148 Jul 31 12:42 ./testfolder2/testfolder/.DS_Store
-rw-r--r--  0 diegoreymendez staff  325377 Jul  5 09:50 ./testfolder2/testfolder/Scala.pages
Archive Format: POSIX ustar format,  Compression: none

Beschädigte TAR-Datei:

> tar -tvvf corrupted.tar 
tar: Unrecognized archive format
Archive Format: (null),  Compression: none
tar: Error exit delayed from previous errors.

Diese sind alle sehr suboptimale Lösungen. Aus dem GZIP spec

  

ID2 (IDentification 2)
  Diese haben die festen Werte ID1 = 31 (0x1F, \ 037), ID2 = 139   (0x8B, \ 213) zu identifizieren, die Datei als in gzip-Format zu sein.

Hat codiert in zu welcher Sprache Sie verwenden.

  

> die -O-Option. [...] Wenn die TAR-Datei beschädigt ist, wird der Prozess mit einem Fehler abgebrochen.

Manchmal ja, manchmal aber auch nicht. Nehmen wir ein Beispiel aus einer beschädigten Datei finden Sie unter:

echo Pete > my_name
tar -cf my_data.tar my_name 

# // Simulate a corruption
sed < my_data.tar 's/Pete/Fool/' > my_data_now.tar
# // "my_data_now.tar" is the corrupted file

tar -xvf my_data_now.tar -O

Es zeigt:

my_name
Fool  

Auch wenn Sie ausführen

echo $?

tar sagte, dass es keine Fehler:

0

, aber die Datei beschädigt wurde, wurde nun „Täuschen“ anstelle von „Pete“.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top