web-dev-qa-db-fra.com

Comment extraire rar rar avec des parties manquantes?

J'ai une archive multipartie .rar contenant un seul fichier .tar.gz à l'intérieur (ne demandez pas pourquoi, c'est simplement ainsi que cela a été créé). Il me manque quelques parties, mais j'ai la première partie. Je voudrais extraire autant de .tar.gz que possible. Comment puis je faire ça?

Si je lance unrar x -kb file.part1.rar, il extrait toujours le début du .tar.gz de part1 et s’arrête là avec une erreur. Je suis heureux d'essayer n'importe quel outil (il n'est pas nécessaire que ce soit irréel).

10
Alex I

J'ai eu une chose semblable sur windows, quand j'avais les parties 1,5,6,9,10 sur 10. Il me manquait les parties 2,3,4,7,8.

  1. utilisez 7Zip pour extraire les pièces que vous avez et renommez-les en conséquence. c'est-à-dire: pt1 pt5 pt6, etc.

  2. générer un fichier nul (zéro) pour remplir les parties manquantes, en utilisant la taille exacte en octets de chacune des parties que vous avez et que vous avez extraites (c'est-à-dire la taille de pt1 qui est identique à celle de pt5 et de pt6 ...):

    fichier fsutil createnew [chemin_du_fichier] [taille_en_bytes]

    dans mon cas, j'ai utilisé:

    fichier fsutil createnew C:\TMP\empty 1022701562

  3. concaténer les fichiers (en utilisant le/b pour les fichiers binaires)

    copier/b fichier1 + fichier2 + fichier3 fichier cible

    dans mon cas:

    copier/b pt1 + vide + vide + vide + pt5 + pt6 + vide + vide + pt9 + pt10 fichier_sortie

quand cela a été fait, j'ai chargé le fichier dans le client Deluge bittorrent, puis j'ai revérifié et il me manquait seulement le pourcentage que je n'avais pas vraiment, ce qui signifie que le client bittorrent a identifié que j'avais la vraie information entre tous les zéros I ajoutée.

2
Nben

Ce n’est probablement plus pertinent, mais j’ai juste eu le même problème et trouvé une solution simple qui a fonctionné pour moi et j’ai pensé que ce serait bien de le partager.

J'avais une archive RAR protégée par mot de passe en 6 parties, mais la partie 4 était manquante. J'ai essayé d'utiliser la fonction "réparation" de WinRAR, mais celle-ci indiquait qu'il ne pouvait pas trouver l'enregistrement de récupération. J'ai essayé les méthodes ci-dessus mais elles ne fonctionnaient pas et l'extraction s'arrêtait toujours là où la partie manquante commençait.

Finalement, j'ai décidé de tromper WinRAR en pensant aux parties 5 et 6 où se trouvaient une archive différente et de les renommer en "archive.part1.rar" et "archive.part2.rar". J'ai ensuite dit à WinRAR d'extraire la nouvelle partie 1 et même si un message d'erreur m'indiquant qu'il ne pouvait pas extraire le fichier qui s'est terminé au début de la nouvelle partie 1 (certaines données manquaient dans la partie 4 manquante), il a réussi à extraire tous les autres fichiers des parties originales 5 et 6.

J'espère que cela aidera d'autres personnes ayant le même problème à l'avenir.

5
magogo200

Je suppose que 100 Mo parties, 3 partie manquant. Tu peux essayer

cat blubb.part01.rar blubb.part02.rar blubb.part04.rar > blubb.rar

j'essaierais aussi, ce qui pourrait fonctionner mieux et laisser penser WinRar, le fichier est corrompu:

dd if=/dev/zero of=blubb.part03.rar bs=1M count=100
cat blubb.part01.rar blubb.part02.rar blubb.part03.rar blubb.part04.rar > blubb.rar
1
davidbaumann

Je n'avais que la deuxième partie de l'archive rar en deux parties, tout en décompressant la partie 2 comme prévu Winrar fit apparaître un message indiquant que la première partie manquait; J'ai également remarqué que le contenu complet de la deuxième partie avait été décompressé dans le dossier. donc, sans toucher au message contextuel de winrar, j'ai copié les fichiers décompressés dans un autre dossier, puis cliqué sur fermer dans le message contextuel de winrar; le contenu non compressé a été supprimé par winrar, mais comme je les avais précédemment copiés dans un autre dossier, je pouvais utiliser le contenu non compressé de ce dossier différent.

1
AR Augustine

Étape 1: renommez les fichiers, par exemple:

file.part1.rar -> fileA.rar
file.part2.rar -> fileB.rar
file.part3.rar -> fileC.rar
etc..

Étape 2: Utilisez 7-Zip pour extraire chaque fichier.

Profit!

(Dans certaines circonstances, renommer est inutile et vous pouvez laisser 7-Zip extraire tous les fichiers pour vous.)

1
cychoi

7-Zip extraira la partie d'un fichier d'un fichier rar à plusieurs parties, puis vous pourrez les associer avec dd. Par exemple, si vous avez les première et dernière rar-parts:

7z x p1.rar
mv dir p1  # rename out of the way
7z x plast.rar
unrar l p1.rar
   # note the file size of the entire file
ls -l dir/file  # note the size of the last part
dd if=dir/file of=p1/file  conv=notrunc  bs=1 seek=$((full_size - lastpart_size))

Si le décalage que vous devez rechercher n'est pas premier, utilisez une taille de bloc supérieure à un. ddne peut que seekà des multiples de la taille du bloc de sortie. ddeffectue vraiment les appels système readet writeavec cette taille de bloc, donc bs=1 est vraiment nul.

Un ibs(taille de bloc d'entrée) volumineux économiserait la moitié du temps CPU, puisque seekest en unités de obs(taille du bloc de sortie). Ou peut-être existe-t-il un autre outil pouvant rechercher une position d'octet arbitraire, puis effectuer des E/S de taille normale. Ou, si vous utilisiez ce script, vous pourriez dd avec bs=1 jusqu'à 32k-aligné, alors peut-être tail -c +$misalignment lastpart/file | dd ... of=p1/file conv=notrunc bs=32k seek=$(( (full_size - lastpart_size + misalignment) / (32 * 1024) ))

0
Peter Cordes