Wie kann ich aus dieser TAR-Datei extrahieren, wenn meine Datei möglicherweise beschädigt ist?

8

Beim Versuch, alle Dateien aus einer TAR-Datei zu extrahieren, wird die folgende Fehlermeldung angezeigt:

tar: Skipping to next header
tar: Error exit delayed from previous errors

Einige der Dateien werden ordnungsgemäß extrahiert, bevor diese Fehlermeldung gedruckt wird, und der Vorgang führt zu einer verstümmelten Datei, die den Rest des Archivs zu enthalten scheint. Alle Dateien in diesem Archiv sind Textdateien.

Kann ich versuchen, den Rest der Dateien wiederherzustellen?

Scottie T.
quelle

Antworten:

5

Sie können Ihren Extrakt mit der Option -i versuchen, um Nullen zu ignorieren:

The --ignore-zeros (-i) option causes tar to ignore blocks of zeros in
the archive. Normally a block of zeros indicates the end of the archive,
but when reading a damaged archive, or one which was created by cat-ing
several archives together, this option allows tar to read the entire
archive. This option is not on by default because many versions of tar
write garbage after the zeroed blocks.
Kevin Kuphal
quelle
Gleiche Fehlermeldung, aber danke für den Vorschlag.
Scottie T
Vielen Dank. Dies half bei Archiven, die mit toybox's erstellt wurden tar.
Domen
1

Sie können auch andere Versionen von tar ausprobieren: gnu tar, star, bsdtar usw. Eine davon kann Fehler besser behandeln.

Sie sagen, Ihre Dateien sind alle Textdateien, daher sollten Sie in der Lage sein, die Datei manuell zu bearbeiten, jede Datei auszuwählen und in eine neue Datei zu kopieren / einzufügen. Suchen Sie nach dem Trennzeichen von tar zwischen den einzelnen Dateien. Es sieht aus wie ein Block von ASCII-NULL-Werten, in den die Metadaten (Name, Berechtigungen, Zeitstempel usw.) der Datei eingebettet sind.

pgs
quelle
cpio kann auch .tar lesen und ist etwas niedriger.
Charlesbridge
0

Es ist nicht schön, aber es wird als letzter Ausweg funktionieren:

Installieren Sie "photorec", das möglicherweise im "testdisk" -Paket enthalten ist, auf Ihrer Distribution (beide finden Sie hier ).

Geben Sie "photorec <foo.tar>"und folgen Sie den Anweisungen (wählen Sie „Keine - nicht partitionierten Medien“ und „andere“ für die Dateisystem - Option). Es sollte in der Lage sein, viele der Dateien wiederherzustellen, obwohl Sie sie alle von Hand identifizieren und umbenennen müssen. Zumindest ist es besser, alles zu verlieren. (Als Referenz habe ich mein / etc-Verzeichnis tariert und dies versucht. Selbst in einer nicht beschädigten TAR-Datei wurden nur 225 von 337 Dateien gespeichert, und sogar einige davon waren ziemlich durcheinander.)

Ein noch brutalerer Ansatz wäre das Ausführen "strings foo.tar > out.txt"von Textdaten aus der Datei, die dann sortiert und von Hand in separate Dateien zurückgelegt werden müssten.

Übrigens ... Google bei "Wiederherstellen einer beschädigten TAR-Datei" lieferte mehrere Tools, die für Ihr Problem spezifisch sind.

Geoff Fritz
quelle