Comment faire pour récupérer un file "tar.gz" corrompu

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:

  1. Utilisez file command file de l'archive pour voir si elle est reconnue comme étant des données gzip .
  2. Exécutez 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.
  3. Exécutez une version de debugging de 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?