kaputte Tar Archive ...

Jan-Benedict Glaw jbglaw at lug-owl.de
Wed Aug 2 15:41:00 CEST 2006


On Wed, 2006-08-02 15:01:59 +0200, stefan at hegner-online.de <stefan at hegner-online.de> wrote:
> > On Tue, 2006-08-01 22:16:14 +0200, stefan at hegner-online.de
> > <stefan at hegner-online.de> wrote:
> > > # tar xvjf ../hda2/root-sicherung-31.07.2006.tbz2
> > > bzip2: I/O or other error, bailing out.  Possible reason follows.
> > > bzip2: Input/output error
> > Bekommst Du kernelseitig IDE-Fehler berichtet (-> dmesg)?
> 
> Ja.
> 
> hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
> hda: dma_intr: error=0x40 { UncorrectableError }, LBAsect=40565736,
> sector=4056
> 5734
> ide: failed opcode was: unknown
> end_request: I/O error, dev hda, sector 40565734
> 
> Das heißt jetzt, dass die Platte hin ist, ja?

Ja, richtig. ...und vermutlich hätte Dich eine Überwachung der
SMART-Werte vorher schon gewarnt.

> > Du könntest zumindest mit "dd if=.... of=xxxx conv=noerror" zumindest
> > mal gucken, ob nicht vielleichtt nur ein Sektor nicht lesbar ist. Das
> > würde zwar bedeuten, daß (vermutlich) 900kb an Daten weg sind, aber
> > besser, als 250MB ...
> 
> Hat geklappt. Archiv ließ sich nicht entpacken (gleicher Fehler, nur 151
> MB), daraufhin b2ziprecover drüberlaufen lassen, Resultat 1102
> Recover-Dateien.
> 
> # b2unzip rec0* |tar -x
> 
> Brach bei Datei 417 (die mit dem Fehler) wieder ab. Habe die Übrigen 684
> Dateien entpackt und in ein seperates Verzeichnis geschoben. Nun habe ich
> 
> # tar -x rec*     bzw.
> # cat rec* | tar -x
> 
> probiert. Ohne Erfolg. Hab' das Gefühl, dass ich ganz nah dran bin. Wie
> kriege ich diese Dateien nun enttart. Wenn das hinhaut, brauche ich nicht
> aufs Juni-Backup zurückgreifen ...
> 
> 1000 Dank

Das ist jetzt so eine Frage, für die ich in die Original-Dateien
gucken müßte. In der Theorie nimmt bzip2 einen Block von (variabler,
abhängig vom Kompressions-Wert 0..9) vermutlich den maximalen 900KB
Größe und komprimiert diesen. Das Ergebnis wird dann in die bz2-Datei
geschrieben.

bzip2recover versucht nun, einen solchen beschädigten Block zu
identifizieren. 900k ist für tar natürlich keine block size, jetzt
geht es also darum, die fehlenden 900k (mal davon ausgehend, daß nur
ein bz2-Block weggeflogen ist) so zu ersetzen, daß tar damit zurande
kommt.

Sind die rec*-Fragmente alle 900k groß? Du könntest versuchen, den
einen kaputten durch null'en zu ersetzen und tar dann mit
--ignore-zeros dazu zu überreden, dieses Archiv-Ende-Zeichen zu
ignorieren :)  (Damit kann man mehrere tar-Archive
hintereinanderpacken und tar entpackt sie alle der Reihe nach.)

Im schlimmsten Fall muß noch ein tar header eingebaut werden, damit
tar über die Datei-Fragmente im ersten Block nach dem kaputten Block
nicht fällt.

MfG, JBG

-- 
       Jan-Benedict Glaw       jbglaw at lug-owl.de                +49-172-7608481
 Signature of:                               If it doesn't work, force it.
 the second  :                      If it breaks, it needed replacing anyway.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lug-owl.de/pipermail/linux/attachments/20060802/01ec194b/attachment.sig>


More information about the Linux mailing list