¿Es posible agregar códigos de corrección de errores (BCH, RS o etc.) a un solo archivo?

12

Hasta donde yo sé, los archivos de WinRAR pueden contener ECC (códigos de corrección de errores), por lo que si el archivo está ligeramente dañado, se puede arreglar solo.

Por ejemplo, puedo primera codifican archives.tara archives.tar.ecc, y luego subirlo a mi servidor. Si el archivo está ligeramente dañado después de la descarga por parte del cliente, puede repararse automáticamente sin descargar el archivo nuevamente mediante decodificación archives.tar.ecc. Creo que será una gran idea si la conexión de red es inestable.

Me pregunto si hay algún software (de código abierto) ejecutado en Linux que pueda satisfacer mis necesidades.

¿Alguna sugerencia?

Kevin Dong
fuente
hasta cierto punto, esto ya sucede: el campo chksum del encabezado de cada archivo es la suma de los bytes constituyentes de ese encabezado, para incluir el campo de tamaño. Muchos tarvan más allá: GNU tarcodifica huecos de archivos dispersos en los metadatos del encabezado y, tras la extracción por cualquier paxarchivador compatible con POSIX, genera archivos que contienen la información necesaria para reconstruir el archivo, o por GNU taral archivo disperso original. Utiliza principalmente variables de encabezado codificadas definibles según lo especificado por POSIX para la paxutilidad w / -o.
mikeserv

Respuestas:

6

Tuve este mismo problema y descubrí que las soluciones proporcionadas en la otra respuesta no eran aceptables ya que el programa / estándar par2 implica la creación de archivos separados para realizar la recuperación y la verificación. Creo que, como el autor de la pregunta original, quiero un solo archivo con códigos de corrección de errores.

Encontré el programa rsbep que solía estar en el administrador de paquetes y luego encontré el código necesario aquí: https://www.thanassis.space/rsbep.html

Esto permite crear un archivo con códigos de corrección de errores Reed-Solomon y luego recuperar el archivo original de la versión ECC, posiblemente corrupta.

Ethan
fuente
rsbep es genial! Pero es un poco diferente: es un sistema operativo congelado completo, por lo que puede agregar archivos dentro pero no puede modificar lo que está dentro, y es un poco más engorroso moverse. Pero es un enfoque realmente interesante, usar FUSE y código abierto.
Gaborous
1
@gaborous, eso no es cierto. Hay una implementación de FUSE fs que se usa de forma rsbeptransparente, pero eso solo se suma a los scripts que funcionan archivo por archivo.
nyov
6

Está interesado en PAR2, que utiliza la corrección de errores Reed-Solomon. parchive es la especificación de formato de archivo ECC, para Linux querrás PyPar o par2tbb , y en Windows usas una GUI llamada QuickPar .

RAKK
fuente
1
Los enlaces para PyPar y par2tbb me parecen rotos. Encontré par2tbb aquí
Drist
2
Creo que PyPar no tiene ninguna relación con la corrección de errores.
mbarkhau
2

Si desea tener el archivo ecc separado del archivo, puede usar pyFileFixity, un proyecto de código abierto de Python que tiene como objetivo proporcionar un sistema de protección similar a PAR de próxima generación contra la corrupción de bits.

Si desea que la protección ecc se incluya directamente en el archivo, puede usar el DAR de código abierto , una especie de TAR de próxima generación, que permite generar tanto no sólidos (es decir, permite la extracción parcial de archivos corruptos) como ecc ( usando PAR2) y el aislamiento del catálogo (es decir, guardar una copia de seguridad del árbol de directorios y los metadatos del sistema de archivos) directamente en los archivos .dar.

gaborous
fuente
0

Otro proyecto similar de 2018 es Redupe, que parece proporcionar corrección de errores de archivos tanto integrados como separados en dos herramientas separadas:

La primera herramienta, redupe, se basa en herramientas de compresión como gzip o bzip2, pero agrega redundancia en lugar de eliminarla.

El ejemplo en la página web (modificado por brevedad) se parece a su caso de uso:

$ redupe home-backup.tar.gz
$ ls -l
-rw------- 1 rescrv 5625162218 home-backup.tar.gz
-rw-r--r-- 1 rescrv 6433996800 home-backup.tar.gz.rd

reundupe luego se puede usar para restaurar el archivo y posiblemente corregir pequeños errores.

yuri
fuente