Comment extraire rar multipart avec des pièces manquantes?


12

J'ai une .rararchive en plusieurs parties contenant un seul .tar.gzfichier à l'intérieur (ne demandez pas pourquoi, c'est juste comme ça qu'elle a été faite). Il me manque quelques parties, mais j'ai la première partie. Je voudrais en extraire autant .tar.gzque possible. Comment puis je faire ça?

Si je l'exécute, unrar x -kb file.part1.raril extrait toujours le début .tar.gzdu part1et s'arrête là avec une erreur. Je suis heureux d'essayer tous les outils (ne doit pas être rare).


1
de toute évidence, vous avez besoin de tout cela, ça ne fonctionnera pas autrement
Sickest

1
Eh bien, il dit qu'il veut "autant que possible". Cependant, il est fort probable que tout ce qu'il extrait ne sera pas utilisable, sauf s'il s'agit d'un simple format de fichier (bitmap?).
WindowsEscapist

S'il y a une autre archive à l'intérieur qui contient de nombreux fichiers, il pourrait être en mesure de récupérer certains des fichiers. L'astuce consiste simplement à extraire autant que possible WinRar.
davidbaumann

2
Je ne comprends pas pourquoi les gens votent contre des questions, simplement parce qu'ils ne comprennent pas.
davidbaumann

Avez-vous trouvé une solution et partagé avec nous?
davidbaumann

Réponses:


2

J'avais quelque chose de similaire sur les fenêtres , quand j'avais des pièces 1,5,6,9,10 sur 10. Il me manquait les pièces 2,3,4,7,8.

  1. utilisez 7zip pour extraire les pièces dont vous disposez 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 extraites (c'est-à-dire la taille de pt1 qui est la même que la taille de pt5 et pt6 ...):

    fsutil file createnew [path_to_file] [size_in_bytes]

    dans mon cas, j'ai utilisé:

    fsutil file createnew C: \ TMP \ empty 1022701562

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

    copier / b fichier1 + fichier2 + fichier3 fichier cible

    dans mon cas:

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

quand il a été fait, j'ai chargé le fichier dans Deluge bittorrent client et forcé à revérifier, et je ne manquais que le pourcentage que je n'avais vraiment pas, ce qui signifie que le client bittorrent a identifié que j'avais les vraies informations entre tous les zéros que je ajoutée.


Je ne comprends pas très bien les instructions. Comment «extraire les pièces que vous avez» de 7zip? 7z %fileessaie de charger tous les fichiers de pièce et renvoie une erreur si l'un d'eux est déjà manquant. Qu'est-ce que tout cela à faire avec les torrents? Puis-je extraire les fichiers compressés originaux individuels du binaire concaténé à l'aide de Deluge?
cduguet

5

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

J'avais une archive RAR protégée par mot de passe en 6 parties, mais la partie 4 manquait. J'ai essayé d'utiliser la fonction "réparation" de WinRAR mais il a dit qu'il ne pouvait pas trouver le dossier 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 avait commencé.

Enfin, j'ai décidé de tromper WinRAR en pensant aux parties 5 et 6 où une archive différente et en les renommant "archive.part1.rar" et "archive.part2.rar". J'ai ensuite dit à WinRAR d'extraire la nouvelle partie 1 et même si j'ai reçu un message d'erreur disant qu'il ne pouvait pas extraire le fichier qui se terminait au début de la nouvelle partie 1 (car il manquait des données de la partie manquante 4), il a réussi à extraire tous les autres fichiers des parties d'origine 5 et 6.

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


1

Je suppose que les pièces de 100 Mo, la partie 3 est manquante. Tu peux essayer

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

aussi j'essaierais, ce qui pourrait mieux fonctionner et faire 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

Bonnes idées, testées. 1. Si toutes les pièces existantes sont concaténées, l'irra échoue (erreur CRC) exactement au même endroit. 2. Si je copie simplement une partie ultérieure pour avoir le même nom que la partie manquante, elle échoue au même endroit, mais imprime ensuite des messages qui impliquent qu'elle traite les parties ultérieures (peut-être à la recherche du début d'un autre fichier) 3. Si je crée un fichier tout-zéros avec dd, il échoue avec "Bad archive"
Alex I

Et, si je crée un fichier contenant tous les zéros et que je concatène, il échoue au même endroit avec "Impossible de trouver le volume"
Alex I

Il suffit de penser: cat blubb.rar | unrar > file.tgz.
davidbaumann

Peut-être que vous voulez utiliser WinRar pour Windows
davidbaumann

1

Étape 1: renommer 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, le changement de nom n'est pas nécessaire et vous pouvez laisser 7-Zip extraire tous les fichiers pour vous.)


3
Cela ne va pas aider avec les fichiers qui s'étendent sur plus d'un fichier pièce.
Rohit Gupta

Avez-vous essayé d'extraire chaque fichier renommé un par un à l'aide de 7-Zip?
cychoi

1

Je n'avais que la deuxième partie de l'archive rar en deux parties, tandis que le déballage de la partie 2 comme prévu, Winrar a fait apparaître un message disant que la première partie était manquante; J'ai également remarqué que le contenu complet de la deuxième partie avait été déballé 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 décompressé a été supprimé par winrar, mais comme je les avais copiés plus tôt dans un dossier différent, je pouvais utiliser le contenu décompressé de ce dossier différent.


0

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

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. ddpeut uniquement seekà des multiples de la taille du bloc de sortie. ddfait vraiment des appels système readet writeavec cette taille de bloc, donc ça bs=1craint vraiment.

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.