[Linux-bruxelles] Unexpected EOF in archive
Miguel Quaremme
mquaremme at yahoo.fr
Lun 14 Mai 14:33:22 CEST 2007
Alain Belkadi a écrit :
> On Mon, May 14, 2007 11:06, Miguel Quaremme wrote:
>
>> Je la lance la commande de récupération et après plusieurs heures
>> j'obtiens le message suivant: Unexpected EOF in archive
>>
>> Il semblerait donc que l'archive soit corrompue. Que puis-je faire
>> pour me sortir de ce problème ?
>
> Hello,
>
> Herm c'est pas pour rien qu'on dit qu'il faut vérifier ses backups de
> temps en temps ;-)
Oui, je sais. je m'en veux ! mea culpa, mea maxima culpa !
> Bon sinon, je suppose que tu as fais une archive avec tar et que tu
> l'as directement envoyé sur le device de backup.
Oui.
> Moi j'essayerais de recréer le ficheir de backup sur un disque dur à
> partir du device de backup, avec 'dd'.
donc si je comprends bien.
- je me mets dans le dossier d'accueil de l'archive avec la commande cd
- je lance dd /dev/stO/* afin de copier tout ce que j'ai sur la cassette.
> Une fois le fichier sur le hd, c'est plus rapide pour travailler
> dessus.
>
> Pour commencer, essayer l'option de tar pour réparer l'archive
> corrompue (man tar, connais pas par coeur).
là je lance tar -tvv qui test l'intégrité des données.
je tente un tar --ignore-failed-read au cas où ça marche.
Dans le cas où ça donne rien je suis les indication qu'on m'a fournie et
que je retranscrit ci-dessous.
Merci pour l'aide.
Marche à suivre en cas d'archive corrompue
------------------------------------------
Vous voulez extraire une archive et vous obtenez une erreur du type
bzip2: Data integrity error when decompressing.
Input file = (stdin), output file = (stdout)
It is possible that the compressed file(s) have become corrupted.
You can use the -tvv option to test integrity of such files.
You can use the `bzip2recover' program to *attempt* to recover
data from undamaged sections of corrupted files.
tar: 56 garbage bytes ignored at end of archive
tar: Unexpected EOF in archive
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now
Et bien vous avez vraiment pas de chance ! Votre archive est
certainement corrompue. Avec le gestionnaire d'archive vous récupérez la
première partie de l'archive, à savoir toutes les données avant l'erreur
dans le fichier.
Pour récupérer la suite taper
bzip2recover nomdelarchive.tar.bz2
Vous obtiendrez une multitude de fichier (de l'ordre de 6000 fichiers
pour une archive de 3 Go) Ces fichiers se nomment
rec00001nomdelarchive.tar et ainsi de suite.
Ensuite il faut tester chacun des fichiers, pour cela taper
bunzip rec*bz2
Si vous avez un retour "d'argument trop long" dans le terminal essayer
par tranche de 1000 (ex: rec01*bz2 puis rec02*bz2 ...) si cela est
encore trop long, envisager la commande xargs
Vous allez obtenir le nom du fichier corrompu (ex
rec003776nomdelarchive.tar) et bien déplacer ce fichier ainsi que ceux
situer avant pour n'avoir que les fichiers suivant le fichier corrompu.
Ensuite reconstruisez la suite des fichiers en tapant
cat rec0* > findelarchvie.tar
Récupérer le script ici
http://oss.bestsolution.at/documents/find_tar_headers.pl.bz2 qui permet
de retrouver les marques d'en-tête, et exécutez-le en tapant:
perl find_tar_headers.pl findelarchive.tar
Une fois lancé, vous pouvez l'arrêter en tapant control + C et repérer
les chiffres mentionnés
findelarchive.tar:17185:top/secret/warp_reactor.so:157106
findelarchive.tar:75041:top/secret/kernel_injectors.so:153125
findelarchive.tar:130849:top/secret/dampening_fields.so:145746
findelarchive.tar:183585:top/secret/plasma_controls.so:157035
Le nombre à repérer est celui de la première ligne, dans ce cas il
s'agit de 17185
Reconstruisez correctement l'archive en tapant
tail -c +17185 findelarchive.tar > bonnearchive.tar
Évidemment mettez le bon chiffre à la place de 17185
Voilà vous n'avez plus qu'a décompresser la dernière archive ainsi obtenu.
(inspiré de cet article
http://oss.bestsolution.at/bash/repair_tar_archives.html.en )
--
Miguel Quaremme
BxLUG :: http://www.bxlug.be/
Passer à Linux :: http://www.passeralinux.fr/
Plus d'informations sur la liste de diffusion Linux-bruxelles