J'ai soudain besoin de récupérer un ancien file tar.gz
, mais dès que je l'exécute:
tar -zxvf filename.tar.gz
J'ai compris:
gzip: stdin: invalid compressed data--format violated tar: Child returned status 1 tar: Error is not recoverable: exiting now
Ce que vous devriez essayer est le suivant:
file
command file
de l'archive pour voir si elle est reconnue comme étant des données gzip
. strace gunzip
sur le file. Cela imprimera les derniers octets lus dans le file qui pourraient vous aider à identifier le point dans le file où la corruption se produit. gunzip
sous gdb
. Essayez de corriger la section endommagée (vous devez être plus chanceux pour pouvoir le faire) et voir si elle peut continuer à la fin du file. En fonction de la nature de la corruption, vous pourriez ou non être en mesure de récupérer vos données.
Quelques informations sur le fonctionnement de la récupération peuvent être trouvées à Récupération d'un file .gz endommagé
Il existe également un outil qui vous aide à faire cela: gzip Recovery Toolkit aka gzrecover
Exécutez zcat bad.tar.gz > some.tar
, et extrayez-le. Aller au-delà de la partie corrompue du file sera difficile. La page man donne des indications sur le format, mais je searchrais d'autres options dans Google.
Etes-vous sûr que cela est compressé avec gzip? Il pourrait se plaindre parce qu'il ne comprend pas le format …
La récupération complète n'est pas possible. Les formats tels que .zip offrent de meilleures options de protection et de récupération, mais pas complet non plus.
.tar.gz regroupe tous les files set, puis applique une compression. .zip redémarre la compression pour chaque file. Par conséquent, dans le file .zip, un dommage causé au bloc compressé n'affecte que le file auquel appartient ce bloc. En .tar.gz, le dommage affectera tous les files suivants jusqu'à ce que la compression soit en quelque sorte redémarrée.
Tous les recueils s'appliquent uniquement pour extraire des informations du début du file au point où l'erreur est survenue, ou où le file est coupé.
Malheureusement, aucune recipie ne décrit comment récupérer une partie du file / stream après la corruption. Quelqu'un at-il qui recipie?