Parchive est un système correcteur d'erreurs qui peut être appliqué à un ensemble de fichiers pour permettre leur reconstruction lorsqu'un ou plusieurs de ces fichiers sont manquants, incomplets ou endommagés.
Les groupes Usenet étaient originellement conçus pour des conversations informelles et n'étaient donc pas conçus pour être un moyen de transmission fiable. Une des limitations pour les conversations était que les messages étaient généralement concis et limités au texte en ASCII 7-bit.
Pour passer des données binaires de 8 bits sur un canal de 7 bits et utiliser Usenet pour les transférer, diverses techniques ont été conçues comme uuencoding et Base64. Plus tard les logiciels Usenet ont permis l'usage de l'ASCII étendu 8 bit, ainsi de nouvelles méthodes comme yEnc sont apparues.
Alors que le problème de transmission des données était résolu, la fiabilité d'Usenet laissait à désirer. En 2001, Tobis Rieper et Stefan Wehlus ont proposé Parity Volume Set specification 1.0. En transmettant des données supplémentaires et en utilisant la correction d'erreur Reed-Solomon, un utilisateur peut reconstruire les données manquantes à partir d'un téléchargement incomplet.
Les fichiers par et par2 sont utilisés pour réparer les fichiers endommagés en se basant sur leur modèle binaire. Le nom par vient de parité. Ces fichiers peuvent être utilisés pour reconstruire des fichiers endommagés ou pour récupérer des fichiers manquants dans un ensemble de fichiers. Par exemple, si une archive découpée en 47 fichiers a été téléchargée, mais qu'un seul d'entre eux est manquant, un fichier par téléchargé peut être utilisé pour reconstruire le fichier manquant.
Il y a deux versions incompatibles (1 et 2) des spécifications du format.
Pour la version 1, en considérant les fichiers f1, f2, …, fn, la Parchive sera constituée d'un fichier d'index (f.par) et d'un certain nombre de volumes de parité (f.p01, f.p02, etc.). Si on a tous les fichiers originaux sauf un seul (par exemple, f2), il est possible de créer le fichier manquant (f2) à partir de tous les fichiers originaux plus n'importe lequel des volumes de parité. De plus, il est possible de recréer deux fichiers manquant à partir de deux volumes de parités, et ainsi de suite.
Les fichiers index (*.par dans la version 1 et *.par2 dans la version 2) ne sont pas nécessaires pour récupérer des données. Les index sont uniquement des hashages qui permettent d'identifier rapidement les fichiers cibles, et leur contenu est dupliqué dans chacun des volumes de parités. Les fichiers index sont utilisés pour vérifier rapidement s'il y a une erreur afin de savoir si des fichiers de parités supplémentaires sont nécessaires. Ils étaient plus utiles dans la version 1 où les volumes de parités étaient plus gros que les index. Tous les fichiers de données Par contiennent l'index en entier, mais la vérification la plus facile de la complétude est d'utiliser un simple fichier index.
La plus importante des limitations trouvée dans l'utilisation réelle des Parchives était lorsqu'une erreur d'un seul bit dans un fichier forçait l'algorithme à mettre à l'écart le fichier en entier. Pour améliorer cette situation, une deuxième version de Parchive a été créée, qui découpait tous les fichiers sources en blocs plus petits. Ces petits blocs peuvent être vus comme des fichiers Parchives eux-mêmes ; si suffisamment de blocs sont présents, tous les autres blocs peuvent être recréés.
Les fichiers PAR2 utilisent en général la convention de nommage : fichier.vol000+01.PAR2, fichier.vol001+02.PAR2, fichier.vol003+04.PAR2, fichier.vol007+06.PAR2, etc. Les éléments +01, +02, etc. dans les noms de fichiers indiquent le nombre de blocs qu'ils contiennent. Si un fichier index d'un téléchargement indique que 4 blocs sont manquants, la façon la plus simple de réparer les fichiers sera de télécharger le fichier fichier.vol003+04.PAR2. Cependant, grâce à la redondance, le fichier fichier.vol007+06.PAR2 est également acceptable.
Les fichiers Parchives peuvent être utilisés dans d'autre cadres que les transmissions Usenet.