Можно ли добавить коды исправления ошибок (BCH, RS или т. Д.) В один файл?

12

Насколько я знаю, архивы WinRAR могут содержать ECC (коды исправления ошибок), поэтому, если архив слегка поврежден, его можно исправить самостоятельно.

Например, я могу первый закодировать archives.tarк archives.tar.ecc, а затем загрузить его на моем сервере. Если файл слегка поврежден после загрузки клиентом, он может быть исправлен автоматически, без повторной загрузки файла путем декодирования archives.tar.ecc. Я думаю, что это будет отличная идея, если сетевое соединение нестабильно.

Интересно, есть ли какое-нибудь программное обеспечение (с открытым исходным кодом), работающее в Linux, которое может удовлетворить мои потребности?

Какие-либо предложения?

Кевин Донг
источник
в некоторой степени это уже происходит - поле chksum каждого заголовка файла представляет собой сумму байтов, составляющих этот заголовок, - включая поле размера. Многие tarидут дальше - GNU tarкодирует разреженные дыры в файлах метаданных заголовка и после извлечения любым POSIX- paxсовместимым архиватором генерирует файлы, содержащие информацию, необходимую для перестройки файла, или с помощью GNU tarв исходный разреженный файл. Он использует в основном закодированные переменные заголовка, определяемые как указано POSIX для paxутилиты w / -o.
mikeserv

Ответы:

6

У меня возникла та же проблема, и я обнаружил, что решения, представленные в другом ответе, неприемлемы, поскольку программа / стандарт par2 включает создание отдельных файлов для восстановления и проверки. Мне, как и самому оригинальному аскеру, нужен один файл с кодами, исправляющими ошибки.

Я нашел программу rsbep, которая раньше была в менеджере пакетов, а затем нашел нужный код здесь: https://www.thanassis.space/rsbep.html

Это позволяет создать файл с кодами исправления ошибок Рида-Соломона, а затем извлечь исходный файл из, возможно, поврежденной версии ECC.

Итан
источник
RSBEP это здорово! Но это немного по-другому: это полностью замороженная ОС, так что вы можете добавлять файлы внутрь, но вы не можете изменить то, что внутри, и это немного более громоздко для перемещения. Но это действительно интересный подход, использующий FUSE и opensource.
Габорист
1
@Gaborous, это не правда. Существует реализация FUSE fs, использующая rsbepпрозрачно, но это только поверх сценариев, которые работают на файловой основе.
nyov
6

Вы заинтересованы в PAR2, который использует исправление ошибок Рида-Соломона. parchive - это спецификация формата файла ECC, для Linux вам понадобится PyPar или par2tbb , а в Windows вы используете графический интерфейс QuickPar .

RAKK
источник
1
Ссылки на PyPar и par2tbb для меня неработоспособны. Я нашел par2tbb здесь
Дрист
2
Я думаю, что PyPar совершенно не связан с исправлением ошибок.
mbarkhau
2

Если вы хотите, чтобы файл ecc был отделен от архива, вы можете использовать pyFileFixity, проект Python с открытым исходным кодом , целью которого является обеспечение PAR-подобной системы защиты следующего поколения от битового повреждения.

Если вы хотите, чтобы защита ecc была включена непосредственно в архив, вы можете использовать DAR с открытым исходным кодом , своего рода TAR следующего поколения, который позволяет генерировать как нетвердые (т. Е. Позволяет частичное извлечение поврежденных архивов), так и ecc ( используя PAR2) и изоляцию каталога (т.е. сохраните резервную копию дерева каталогов и метаданных файловой системы) непосредственно в архивах .dar.

gaborous
источник
0

Другой похожий проект 2018 года - это Redupe, который, как представляется, обеспечивает как отдельное, так и встроенное исправление ошибок в файлах двумя отдельными инструментами:

Первый инструмент, redupe, смоделирован после инструментов сжатия, таких как gzip или bzip2, но добавляет избыточность вместо того, чтобы устранять ее.

Пример на веб-странице (изменен для краткости) выглядит аналогично вашему варианту использования:

$ 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 Затем можно использовать для восстановления файла и, возможно, исправить небольшие ошибки.

юрий
источник