Crear y reparar archivos comprimirdos con sus archivos par2
Introducción
A veces puedes encontrarte con archivos comprimidos en varios volúmenes (prueba.part001.rar, prueba.part002.rar, prueba.part003.rar, ...). Puede darse el caso de que un archivo de este volumen no lo tengas o este corrupto (dañado). Hoy en día podemos disponer de herramientas que nos permitan descomprimir el contenido comprimido aun teniendo este problema (siempre que se haya comprimido creando unos archivos necesarios) si hay suficiente información para ello en el volumen.
Los ficheros Par2 pueden ser utilizados para reparar ficheros comprimidos dañados. Pero para ello se habrán tenido que crear al hacer el archivo comprimido. El proceso analiza los bloques de cada fichero rar y publica si esta completo, incompleto o perdido. Cada fichero par2 se puede utilizar para arreglar cierto número de bloques. Todo lo que necesitas es tener la suficiente cantidad de ficheros par2 que puedan arreglar los bloques perdidos para poder repararlos. Puedes reparar cualquier fichero rar dañado con cualquier fichero par2.
Lo primero que tendremos que hacer es instalar el programa:
>> sudo apt-get install par2
Creación de los ficheros par2
Si vamos a comprimir algo en varios archivos rar, podemos crear los archivos par2 para que cuando lo queramos descomprimir y no tengamos alguno de los archivos o que alguno de los archivos se haya dañado con el tiempo o al transprotarlo. Como ejemplo, vamos a crear una lista de archivos comprimidos. Vamos a comprimir el fichero prueba.avi con una compresión del 1 en archivos de 5 megas:
>> rar a prueba.rar -v5m -m1 prueba.avi ... >> ls prueba.avi prueba.part02.rar prueba.part04.rar prueba.part06.rar prueba.part08.rar prueba.part10.rar prueba.part01.rar prueba.part03.rar prueba.part05.rar prueba.part07.rar prueba.part09.rar
Ahora vamos a crear 4 archivos par2 de nombre prueba y con un tamaño igual para los 4:
>> par2create -u -n4 prueba prueba.part*.rar ... Block size: 25012 Source file count: 10 Source block count: 2004 Redundancy: 10% Recovery block count: 200 Recovery file count: 4 Opening: prueba.part01.rar ... Opening: prueba.part10.rar Computing Reed Solomon matrix. Constructing: done. Wrote 5002400 bytes to disk Writing recovery packets Writing verification packets Done
Ya tenemos creados los archivos par2, lo comprobamos:
>> ls prueba.avi prueba.part01.rar prueba.part03.rar prueba.part05.rar prueba.part07.rar prueba.part09.rar prueba.vol000+16.par2 prueba.vol048+64.par2 prueba.par2 prueba.part02.rar prueba.part04.rar prueba.part06.rar prueba.part08.rar prueba.part10.rar prueba.vol016+32.par2 prueba.vol112+88.par2
Otros ejemplos serían:
- Crear archivos par2 del mismo tamaño y con un 10% de redundancia:
>> par2create -u -r10 prueba prueba.part*.rar
Recuperación con ficheros par2
Si queremos descomprimir un archivo comprimido en varios archivos rar pero no tenemos todos los archivos o alguno de estos esta dañado, podemos hacerlo si tenemos los archivos par2. Vamos a ver un ejemplo de uso si un archivo troceado en trozos con archivos PAR2 y que le falta 1 archivo (prueba.part019.rar). Estos son los archivos que tenemos:
>> ls prueba.md5 prueba.par2 prueba.part001.rar ... prueba.part018.rar prueba.part020.rar ... prueba.part030.rar prueba.vol000_50.PAR2 prueba.vol050_50.PAR2 prueba.vol100_50.PAR2
Ahora vamos a ejecutar el programa par2 para que compruebe cuantos archivos faltan o estan dañados y si tiene los suficientes bloques para recuperarlos:
>> par2repair prueba.par2 par2cmdline version 0.4, Copyright (C) 2003 Peter Brian Clements. par2cmdline comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. See COPYING for details. Loading "prueba.par2". Loaded 370 new packets Loading "prueba.vol100_50.PAR2". Loaded 50 new packets including 50 recovery blocks Loading "prueba.vol000_50.PAR2". Loaded 50 new packets including 50 recovery blocks Loading "prueba.vol050_50.PAR2". Loaded 50 new packets including 50 recovery blocks There are 30 recoverable files and 0 other files. The block size used was 2000000 bytes. There are a total of 1529 data blocks. The total size of the data files is 19021486678 bytes. Verifying source files: Target: "prueba.part001.rar" - found. ... Target: "prueba.part058.rar" - found. Target: "prueba.part059.rar" - missing. Target: "prueba.part060.rar" - found. ... Target: "prueba.part130.rar" - found. Scanning extra files: Repair is required. 1 file(s) are missing. 30 file(s) are ok. You have 1495 out of 1529 data blocks available. You have 150 recovery blocks available. Repair is possible. You have an excess of 116 recovery blocks. 34 recovery blocks will be used to repair. Computing Reed Solomon matrix. Constructing: done. Solving: done. Wrote 16776448 bytes to disk ... Wrote 13108224 bytes to disk Verifying repaired files: Target: "prueba.part019.rar" - found. Repair complete.
Como podemos ver había suficientes bloques para recuperar el archivo perdido y lo ha recuperado.