¿Cómo extraer rar multiparte con partes faltantes?

12

Tengo un .rararchivo de varias partes que contiene un solo .tar.gzarchivo dentro (no pregunte por qué, así es como se hizo). Me faltan algunas de las partes, pero tengo la primera parte. Me gustaría extraer la mayor cantidad .tar.gzposible. ¿Cómo puedo hacer eso?

Si me quedo unrar x -kb file.part1.rarsiempre extrae el inicio de la .tar.gzde part1y se detiene allí con un error. Estoy feliz de probar cualquier herramienta (no tiene que ser unrar).

Alex I
fuente
1
obviamente, necesitas todo, no funcionará de otra manera
Enfermo
1
Bueno, él dice que quiere "tanto como sea posible". Sin embargo, es muy probable que lo que extraiga no sea utilizable, a menos que sea un formato de archivo simple (¿mapa de bits?).
WindowsEscapist
Si hay otro archivo dentro que contiene muchos archivos, podría recuperar algunos de los archivos. El truco es hacer que WinRar extraiga lo más posible.
davidbaumann
2
No entiendo por qué la gente rechaza las preguntas, solo porque no entienden.
davidbaumann
Entonces, ¿encontraste una solución y la compartiste con nosotros?
davidbaumann

Respuestas:

2

Tenía una cosa similar en Windows , cuando tenía partes 1,5,6,9,10 de 10. Me faltaban partes 2,3,4,7,8.

  1. usa 7zip para extraer las partes que tienes y renómbralas como corresponda. es decir: pt1 pt5 pt6, etc.

  2. genere un archivo nulo (cero) para llenar las partes que faltan, utilizando el tamaño exacto en bytes de cada una de las partes que TIENE y extrae (es decir, el tamaño de pt1, que es el mismo que el tamaño de pt5 y pt6 ...):

    fsutil file createnew [ruta_a_archivo] [tamaño_en_bytes]

    en mi caso usé:

    fsutil file createnew C: \ TMP \ empty 1022701562

  3. concatenar los archivos (usando / b para archivos binarios)

    copy / b file1 + file2 + file3 targetfile

    en mi caso:

    copy / b pt1 + empty + empty + empty + pt5 + pt6 + empty + empty + pt9 + pt10 output_file

cuando terminó, cargué el archivo en el cliente de bittorrent de Deluge y volví a comprobarlo, y solo me faltaba el porcentaje que realmente no tenía, lo que significa que el cliente de bittorrent identificó que sí tengo la información verdadera entre todos los ceros. adicional.

Nben
fuente
No entiendo muy bien las instrucciones. ¿Cómo 'extrae las partes que tiene' de 7zip? 7z %fileintenta cargar todos los archivos de pieza y devuelve un error si ya falta uno de ellos. ¿Qué tiene que ver todo esto con los torrents? ¿Puedo extraer los archivos comprimidos originales individuales del binario concatenado usando Deluge?
cduguet
5

Probablemente esto ya no sea relevante, pero tuve el mismo problema y encontré una solución simple que funcionó para mí y pensé que sería bueno compartirla.

Tenía un archivo RAR protegido con contraseña en 6 partes, pero faltaba la parte 4. Traté de usar la función de "reparación" de WinRAR pero dijo que no podía encontrar el registro de recuperación. Probé los métodos anteriores pero no funcionaron y la extracción siempre se detenía donde comenzó la parte faltante.

Finalmente, decidí engañar a WinRAR para que pensara en las partes 5 y 6 donde había un archivo diferente y los renombré como "archive.part1.rar" y "archive.part2.rar". Luego le dije a WinRAR que extrajera la nueva parte 1 y, aunque recibí un mensaje de error que decía que no podía extraer el archivo que finalizó al comienzo de la nueva parte 1 (ya que faltaban algunos datos de la parte 4 que faltaba), logró extraer todos los demás archivos de las partes originales 5 y 6.

Espero que esto ayude a otras personas con el mismo problema en el futuro.

magogo200
fuente
1

Supongo que faltan 100Mb, falta la parte 3. Puedes probar

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

También lo intentaría, lo que podría funcionar mejor y hacer pensar a WinRar, el archivo está dañado:

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
davidbaumann
fuente
Buenas ideas, las probé. 1. Si todas las partes existentes están concatenadas, unrar falla (error CRC) exactamente en el mismo lugar. 2. Si solo copio una parte posterior para que tenga el mismo nombre que la parte que falta, falla en el mismo lugar, pero luego imprime mensajes que implican que está procesando las partes posteriores (tal vez buscando el inicio de otro archivo) 3. Si creo un archivo todo ceros con dd, falla con "Archivo incorrecto"
Alex I
Y, si creo un archivo con todos ceros y concatenado, falla en el mismo lugar con "No se puede encontrar el volumen"
Alex I
Sólo pensar: cat blubb.rar | unrar > file.tgz.
davidbaumann
Tal vez quiera usar WinRar para Windows
davidbaumann
1

Paso 1: cambie el nombre de los archivos, por ejemplo:

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

Paso 2: usa 7-Zip para extraer cada archivo.

¡Lucro!

(En algunas circunstancias, el cambio de nombre es innecesario y puede dejar que 7-Zip extraiga todos los archivos por usted).

cychoi
fuente
3
Esto no va a ayudar con archivos que abarcan más de un archivo de parte.
Rohit Gupta
¿Has intentado extraer cada archivo renombrado uno por uno usando 7-Zip?
cychoi
1

Solo tenía la segunda parte del archivo rar de dos partes, mientras desempacaba la parte 2 como se esperaba winrar apareció un mensaje diciendo que faltaba la primera parte; También noté que el contenido completo de la segunda parte había sido desempaquetado en la carpeta; así que sin tocar el mensaje emergente de winrar, copié los archivos desempaquetados en otra carpeta y luego hice clic en cerrar en el mensaje emergente de winrar; Winrar eliminó el contenido desempaquetado, pero como los había copiado anteriormente en una carpeta diferente, pude usar el contenido desempaquetado de esa carpeta diferente.

AR Augustine
fuente
0

7-zip extraerá la parte de un archivo de un rar de varias partes, y luego puede volver a unirlas con dd. Por ejemplo, si tiene las primeras y últimas partes 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 el desplazamiento que necesita buscar no es primo, use un tamaño de bloque mayor que uno. ddsolo puede seeka múltiplos del tamaño del bloque de salida. ddRealmente hace ready writellama al sistema con ese tamaño de bloque, así que bs=1realmente apesta.

Un gran ibs(tamaño de bloque de entrada) ahorraría la mitad del tiempo de CPU, ya que seekestá en unidades de obs(tamaño de bloque de salida). O tal vez hay alguna otra herramienta que puede buscar una posición de byte arbitraria y luego hacer E / S de tamaño normal. O si estuviera escribiendo esto, podría hacer dd con bs=1hasta 32k alineados, entonces tal veztail -c +$misalignment lastpart/file | dd ... of=p1/file conv=notrunc bs=32k seek=$(( (full_size - lastpart_size + misalignment) / (32 * 1024) ))

Peter Cordes
fuente