É possível adicionar códigos de correção de erros (BCH, RS ou etc.) a um único arquivo?


12

Até onde eu sei, os arquivos WinRAR podem conter ECC (códigos de correção de erros); portanto, se o arquivo estiver ligeiramente danificado, poderá ser corrigido por si só.

Por exemplo, posso codificar primeiro archives.tarpara archives.tar.ecce depois enviá-lo para o meu servidor. Se o arquivo estiver ligeiramente danificado após o download pelo cliente, ele poderá ser corrigido automaticamente sem o download novamente, decodificando archives.tar.ecc. Eu acho que será uma ótima idéia se a conexão de rede estiver instável.

Gostaria de saber se existe algum software (de código aberto) executado no Linux que possa atender às minhas necessidades.

Alguma sugestão?


até certo ponto, isso já acontece - o campo chksum do cabeçalho de cada arquivo é a soma dos bytes constituintes desse cabeçalho - para incluir o campo size. Muitos tarvão além: o GNU tarcodifica falhas de arquivos esparsos nos metadados do cabeçalho e, após a extração por qualquer paxarquivador compatível com POSIX, gera arquivos contendo as informações necessárias para reconstruir o arquivo, ou pelo GNU tarno arquivo esparso original. Ele usa principalmente variáveis ​​de cabeçalho codificadas, definíveis conforme especificado pelo POSIX para o paxutilitário w / -o.
mikeserv

Respostas:


6

Eu tive esse mesmo problema e descobri que as soluções fornecidas na outra resposta não eram aceitáveis, pois o programa / padrão par2 envolve a criação de arquivos separados para recuperação e verificação. Eu, como o autor original, penso, quero um único arquivo com códigos de correção de erros.

Encontrei o programa rsbep, que costumava estar no gerenciador de pacotes e, em seguida, encontrei o código necessário aqui: https://www.thanassis.space/rsbep.html

Isso permite criar um arquivo com códigos de correção de erros de Reed-Solomon e recuperar o arquivo original da versão do ECC, possivelmente corrompida.


rsbep é ótimo! Mas é um pouco diferente: é um sistema operacional inteiro congelado, para que você possa adicionar arquivos dentro, mas não pode modificar o que está dentro, e é um pouco mais complicado de se movimentar. Mas é uma abordagem realmente interessante, usando o FUSE e o código-fonte aberto.
gaborous

1
@gaborous, isso não é verdade. Existe uma implementação do FUSE fs usando rsbeptransparentemente, mas isso é apenas parte dos scripts que funcionam arquivo por arquivo.
Neyov 25/03/19

6

Você está interessado no PAR2, que usa a correção de erros Reed-Solomon. parchive é a especificação de formato de arquivo ECC; no Linux, você deseja PyPar ou par2tbb e, no Windows, usa uma GUI chamada QuickPar .


1
Os links para PyPar e par2tbb parecem quebrados para mim. Eu encontrei par2tbb aqui
Drist

2
Eu acho que o PyPar não tem nenhuma relação com a correção de erros.
Mbarkhau

2

Se você deseja separar o arquivo ecc do arquivo, use o pyFileFixity, um projeto Python de código aberto que visa fornecer um sistema de proteção semelhante à PAR da próxima geração contra corrupção de bits.

Se você deseja que a proteção ecc seja incluída diretamente no arquivo morto, você pode usar o DAR de código- fonte aberto , um tipo de TAR de próxima geração, que permite gerar elementos não sólidos (ou seja, permite a extração parcial de arquivos corrompidos) e ecc ( usando PAR2) e isolamento do catálogo (ou seja, salve um backup da árvore de diretórios e dos metadados do sistema de arquivos) diretamente nos arquivos .dar.


0

Outro projeto semelhante de 2018 é o Redupe, que parece fornecer correção de erro de arquivo separado e incorporado em duas ferramentas separadas:

A primeira ferramenta, redupe, é modelada após ferramentas de compressão como gzip ou bzip2, mas adiciona redundância em vez de eliminá-la.

O exemplo na página da Web (alterado por brevidade) é semelhante ao seu 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 pode então ser usado para restaurar o arquivo e possivelmente corrigir pequenos erros.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.