Articulo de referencia

Párrafo

Parchive (una combinación de parity archive y formalmente conocido como Parity Volume Set Specification [ 1 ] [ 2 ] ) es un sistema de código de borrado que produce archivos par...

Parchive (una combinación de parity archive y formalmente conocido como Parity Volume Set Specification [ 1 ] [ 2 ] ) es un sistema de código de borrado que produce archivos par para la verificación de suma de comprobación de la integridad de los datos , con la capacidad de realizar operaciones de recuperación de datos que pueden reparar o regenerar datos corruptos o faltantes.

Parchive fue escrito originalmente para resolver el problema del intercambio confiable de archivos en Usenet , [ 3 ] pero puede usarse para proteger cualquier tipo de datos contra la corrupción de datos , el deterioro del disco , la degradación de bits y daños accidentales o maliciosos. A pesar del nombre, Parchive utiliza técnicas más avanzadas (específicamente códigos de corrección de errores ) que los métodos de paridad simplistas de detección de errores .

A partir de 2015, PAR1 está obsoleto, PAR2 está maduro para su uso generalizado y PAR3 es una versión experimental descontinuada desarrollada por el autor de MultiPar, Yutaka Sawada. [ 4 ] [ 5 ] [ 6 ] [ 7 ] El proyecto original SourceForge Parchive ha estado inactivo desde el 30 de abril de 2015. [ 8 ] Una nueva especificación PAR3 ha estado siendo desarrollada desde el 28 de abril de 2019 por el autor de la especificación PAR2, Michael Nahas. Una versión alfa de la especificación PAR3 se publicó el 29 de enero de 2022 [ 9 ] mientras el programa en sí está en desarrollo.

Historia

Parchive se diseñó para aumentar la fiabilidad de la transferencia de archivos a través de los grupos de noticias de Usenet . Usenet se diseñó originalmente para conversaciones informales, y el protocolo subyacente, NNTP, no se diseñó para transmitir datos binarios arbitrarios. Otra limitación, que era aceptable para las conversaciones pero no para los archivos, era que los mensajes solían ser bastante cortos y se limitaban a texto ASCII de 7 bits . [ 10 ]

Se idearon diversas técnicas para enviar archivos a través de Usenet, como la codificación uuen y Base64 . Posteriormente, el software de Usenet permitió el uso de ASCII extendido de 8 bits , lo que posibilitó nuevas técnicas como yEnc . Los archivos grandes se dividieron para reducir el impacto de una descarga corrupta, pero la inestabilidad de Usenet persistió.

Con la introducción de Parchive, se podían crear archivos de paridad que luego se cargaban junto con los archivos de datos originales. Si alguno de los archivos de datos se dañaba o se perdía durante la propagación entre servidores Usenet, los usuarios podían descargar los archivos de paridad y utilizarlos para reconstruir los archivos dañados o faltantes. Parchive incluía la creación de pequeños archivos de índice (*.par en la versión 1 y *.par2 en la versión 2) que no contienen datos de recuperación. Estos índices contienen hashes de archivos que se pueden usar para identificar rápidamente los archivos de destino y verificar su integridad.

Debido a su pequeño tamaño, los archivos de índice minimizaban la cantidad de datos adicionales que debían descargarse de Usenet para verificar que todos los archivos de datos estuvieran presentes e intactos, o para determinar cuántos volúmenes de paridad se requerían para reparar cualquier daño o reconstruir los archivos faltantes. Resultaron especialmente útiles en la versión 1, donde los volúmenes de paridad eran mucho mayores que los archivos de índice. Estos volúmenes de paridad, de mayor tamaño, contienen los datos de recuperación reales junto con una copia duplicada de la información de los archivos de índice (lo que permite utilizarlos de forma independiente para verificar la integridad de los archivos de datos si no se dispone de un archivo de índice pequeño).

En julio de 2001, Tobias Rieper y Stefan Wehlus propusieron la especificación Parity Volume Set, y con la ayuda de otros miembros del proyecto, la versión 1.0 de la especificación se publicó en octubre de 2001. [ 11 ] Par1 utilizó la corrección de errores Reed-Solomon para crear nuevos archivos de recuperación. Cualquiera de los archivos de recuperación se puede utilizar para reconstruir un archivo faltante a partir de una descarga incompleta .

La versión 1 se popularizó en Usenet, pero presentaba algunas limitaciones:

  • Estaba limitado a manejar un máximo de 255 archivos.
  • Los archivos de recuperación debían tener el tamaño del archivo de entrada más grande, por lo que no funcionaba bien cuando los archivos de entrada eran de diferentes tamaños. (Esto limitaba su utilidad cuando no se combinaba con la herramienta de compresión RAR, propiedad de la empresa).
  • El algoritmo de recuperación tenía un error, debido a una falla [ 12 ] en el artículo académico [ 13 ] en el que se basaba.
  • Estaba estrechamente vinculado a Usenet y se consideró que una herramienta más general podría tener un público más amplio.

En enero de 2002, Howard Fukada propuso que se elaborara una nueva especificación Par2 con cambios significativos: la verificación y reparación de datos debían funcionar sobre bloques de datos en lugar de archivos completos, y el algoritmo debía pasar a utilizar números de 16 bits en lugar de los de 8 bits que utilizaba PAR1. Michael Nahas y Peter Clements retomaron estas ideas en julio de 2002, con aportaciones adicionales de Paul Nettle y Ryan Gallagher (quienes desarrollaron clientes para Par1). La versión 2.0 de la especificación Parchive fue publicada por Michael Nahas en septiembre de 2002. [ 14 ]

Peter Clements escribió las dos primeras implementaciones de Par2: QuickPar y par2cmdline. Tras ser abandonado en 2004, Paul Houle creó phpar2 para reemplazar a par2cmdline. Yutaka Sawada creó MultiPar para reemplazar a QuickPar. MultiPar utiliza par2j.exe (que se basa parcialmente en las técnicas de optimización de par2cmdline) como motor de backend.

Versiones

Las versiones 1 y 2 del formato de archivo son incompatibles. (Sin embargo, muchos clientes admiten ambas).

Par1

Para Par1, los archivos f1 , f2 , ..., fn , el Parchive consta de un archivo de índice ( f.par ), que es un archivo de tipo CRC sin bloques de recuperación, y varios "volúmenes de paridad" ( f.p01 , f.p02 , etc.). Dados todos los archivos originales excepto uno (por ejemplo, f2 ), es posible crear el archivo f2 faltante a partir de todos los demás archivos originales y cualquiera de los volúmenes de paridad. Alternativamente, es posible recrear dos archivos faltantes a partir de dos cualesquiera de los volúmenes de paridad, y así sucesivamente. [ 15 ]

Par1 admite un total de hasta 256 archivos de origen y recuperación.

Par2

Los archivos Par2 generalmente usan este sistema de nombres/extensiones: nombrearchivo.vol000+01.PAR2 , nombrearchivo.vol001+02.PAR2 , nombrearchivo.vol003+04.PAR2 , nombrearchivo.vol007+06.PAR2 , etc. El número después del "+" en el nombre del archivo indica cuántos bloques contiene, y el número después de "vol" indica el número del primer bloque de recuperación dentro del archivo PAR2. Si un archivo de índice de una descarga indica que faltan 4 bloques, la forma más fácil de reparar los archivos sería descargando nombrearchivo.vol003+04.PAR2 . Sin embargo, debido a la redundancia, nombrearchivo.vol007+06.PAR2 también es aceptable. También hay un archivo de índice nombrearchivo.PAR2 , que es idéntico en función al pequeño archivo de índice utilizado en PAR1.

La especificación Par2 admite hasta 32 768 bloques de origen y hasta 65 535 bloques de recuperación. Los archivos de entrada se dividen en varios bloques de igual tamaño, de modo que los archivos de recuperación no necesitan tener el tamaño del archivo de entrada más grande.

Aunque Unicode se menciona en la especificación PAR2 como una opción, la mayoría de las implementaciones de PAR2 no lo admiten.

La especificación PAR2 incluye compatibilidad con directorios, pero la mayoría de las implementaciones, si no todas, no la admiten.

Par3

La especificación Par3 se planeó originalmente para ser publicada como una mejora de la especificación Par2. Sin embargo, hasta la fecha, su propietario, Yutaka Sawada, la ha mantenido como software de código cerrado.

El 29 de enero de 2019, se inició un debate sobre un nuevo formato en la sección de incidencias de GitHub del repositorio par2cmdline. Este debate dio lugar a un nuevo formato, también conocido como Par3. La especificación del nuevo formato Par3 está publicada en GitHub , pero a fecha de 28 de enero de 2022 aún se encuentra en fase alfa. La especificación fue escrita por Michael Nahas, autor de la especificación Par2, con la colaboración de Yutaka Sawada, animetosho y malaire.

El nuevo formato afirma tener múltiples ventajas sobre el formato Par2, incluyendo soporte para:

  • Más de 2 16 archivos y más de 2 16 bloques.
  • Empaquetar archivos pequeños en un solo bloque, así como eliminar duplicados cuando un bloque aparece en varios archivos.
  • Nombres de archivo UTF-8 .
  • Permisos de archivo, enlaces duros, enlaces simbólicos/blandos y directorios vacíos.
  • Incrustar datos PAR dentro de otros formatos, como archivos ZIP o imágenes de disco ISO .
  • Las "copias de seguridad incrementales" son aquellas en las que un usuario crea archivos de recuperación para algún archivo o carpeta, modifica algunos datos y crea nuevos archivos de recuperación reutilizando algunos de los archivos antiguos.
  • Más algoritmos de código de corrección de errores (como LDPC y matriz aleatoria dispersa ).
  • Hashes BLAKE3 , dejando de ser compatible con los hashes MD5 utilizados en PAR2.

Software

Multiplataforma

  • par2+tbb ( GPLv2 )  — una versión concurrente (multihilo) de par2cmdline 0.4 que utiliza TBB . Solo compatible con CPU basadas en x86 . Está disponible en el sistema FreeBSD Ports como par2cmdline-tbb .
  • par2cmdline original  — (obsoleto). Disponible en el sistema de puertos de FreeBSD como par2cmdline .
  • par2cmdline mantiene una bifurcación por BlackIkeEagle.
  • par2cmdline-mt es otra versión multihilo de par2cmdline que utiliza OpenMP , GPLv2 o posterior. Actualmente está integrada en la bifurcación de BlackIkeEagle y se mantiene allí.
  • ParPar ( CC0 ) es un cliente PAR2 multihilo de alto rendimiento y una biblioteca para Node.js. No admite verificación ni reparación; actualmente solo puede crear archivos PAR2.
  • par2deep ( LGPL-3.0 )  — Genera, verifica y repara archivos par2 de forma recursiva, tanto desde la línea de comandos como mediante una interfaz gráfica de usuario. Está disponible en el sistema Python Package Index como par2deep .
  • par2cron ( Licencia MIT ) es una herramienta de organización y automatización para usar PAR2 y proteger grandes árboles de directorios, como bibliotecas multimedia o carpetas de copias de seguridad. Facilita la creación, verificación y reparación automatizadas mediante conjuntos PAR2 y puede usarse en combinación con tareas programadas (Cron jobs).

Windows

  • MultiPar (software gratuito) — Se basa en las características y la GUI  de QuickPar y utiliza par2j.exe de Yutaka Sawada como backend de PAR2. MultiPar admite varios idiomas mediante Unicode. El nombre de MultiPar deriva de "cliente PAR multilingüe". También se ha comprobado que MultiPar funciona con Wine en TrueOS y Ubuntu , y puede funcionar con otros sistemas operativos. [ 16 ] [ 17 ] Aunque los componentes de Par2 son (o serán) de código abierto, la GUI de MultiPar que se ejecuta sobre ellos actualmente no lo es. [ 18 ]
  • QuickPar (software gratuito)  : sin mantenimiento desde 2004, reemplazado por MultiPar.
  • phpar2  : una versión avanzada de par2cmdline con multihilo y código ensamblador altamente optimizado (aproximadamente un 66 % más rápido que QuickPar 0.9.1).
  • Mirror  — Primera implementación de PAR, sin mantenimiento desde 2001.

Mac OS X

  • MacPAR deLuxe 4.2
  • UnRarX

POSIX

Software para sistemas operativos compatibles con POSIX :

  • Par2 para KDE 4
  • PyPar2 1.4 , una interfaz para par2.
  • GPar2 2.03

Véase también

Referencias

  1. Re: Corrección a Parchive en Wikipedia , respuesta n.° 3, por Yutaka Sawada: "Sus títulos formales son "Especificación del conjunto de volúmenes de paridad 1.0" y "Especificación del conjunto de volúmenes de paridad 2.0".
  2. Re: Corrección a Parchive en Wikipedia , respuesta n.° 3, por Yutaka Sawada: "Sus títulos formales son "Especificación del conjunto de volúmenes de paridad 1.0" y "Especificación del conjunto de volúmenes de paridad 2.0".
  3. "Parchive: Parity Archive Volume Set" . Consultado el 29 de octubre de 2009. La idea original de este proyecto era proporcionar una herramienta para aplicar los conceptos de recuperación de datos de los sistemas tipo RAID a la publicación y recuperación de archivos multipartes en Usenet.
  4. "posibilidad de nuevo archivo PAR3" . Archivado del original el 7 de julio de 2012. Consultado el 1 de julio de 2012 .
  5. "Pregunta sobre su uso de PAR3" . Archivado del original el 9 de marzo de 2014. Consultado el 1 de julio de 2012 .
  6. "Riesgo de modificación intencionada indetectable" . Archivado del original el 9 de marzo de 2014. Consultado el 1 de julio de 2012 .
  7. "Propuesta de especificación PAR3 no finalizada a abril de 2011" . Archivado del original el 9 de marzo de 2014. Consultado el 1 de julio de 2012 .
  8. "Parchive: Herramienta de archivo de paridad" . 30 de abril de 2015. Consultado el 20 de mayo de 2020 .
  9. "Especificación del conjunto de volumen de paridad 3.0 [ BORRADOR ALPHA 28-01-2022 ] " . Michael Nahas, Yutaka-Sawada, animetosho y malaire.
  10. Kantor, Brian; Lapsley, Phil (febrero de 1986). "Códigos de caracteres" . Protocolo de transferencia de noticias de red . IETF . pág. 5. sec. 2.2. doi : 10.17487/RFC0977 . RFC 977. Consultado el 29 de octubre de 2009 .   
  11. Nahas, Michael (2001-10-14). "Especificación del conjunto de volumen de paridad v1.0" . Recuperado el 2017-06-19 .
  12. Plank, James S.; Ding, Ying (abril de 2003). "Nota: Corrección al tutorial de 1997 sobre codificación Reed-Solomon" . Recuperado el 29 de octubre de 2009 .
  13. Plank, James S. (septiembre de 1997). "Un tutorial sobre la codificación Reed-Solomon para la tolerancia a fallos en sistemas tipo RAID" . Recuperado el 29 de octubre de 2009 .
  14. Nahas, Michael; Clements, Peter; Nettle, Paul; Gallagher, Ryan (11 de mayo de 2003). "Especificación del conjunto de volumen de paridad 2.0" . Recuperado el 29 de octubre de 2009 .
  15. Wang, Wallace (25 de octubre de 2004). «Cómo encontrar películas (o programas de televisión): Recuperación de archivos RAR perdidos con archivos PAR y PAR2» . Steal this File Sharing Book (1.ª ed.). San Francisco, California : No Starch Press . págs. 164-167 . ISBN   978-1-59327-050-6. Consultado el 24 de septiembre de 2009 .
  16. "MultiPar funciona con PCBSD 9.0" . Archivado del original el 28/09/2013 . Consultado el 27/02/2012 .
  17. Funciona en Ubuntu 18.04 a través de Wine.
  18. "Se puso en contacto con usted para preguntarle sobre el código fuente" . Archivado del original el 26 de septiembre de 2013. Consultado el 21 de septiembre de 2013 .
  • Especificación del conjunto de volúmenes de paridad 2.0 (2003)
  • Proyecto Parchive: especificaciones completas y cálculos matemáticos.
  • Introducción a PAR y PAR2
  • Guía de Slyck para los grupos de noticias de Usenet: Archivos PAR y PAR2 archivados el 5 de octubre de 2009 en la Wayback Machine.
  • Guía para reparar archivos usando PAR2
  • Guía de UsenetReviewz para abrir archivos .par