Насколько я знаю, архивы WinRAR могут содержать ECC (коды исправления ошибок), поэтому, если архив слегка поврежден, его можно исправить самостоятельно.
Например, я могу первый закодировать archives.tar
к archives.tar.ecc
, а затем загрузить его на моем сервере. Если файл слегка поврежден после загрузки клиентом, он может быть исправлен автоматически, без повторной загрузки файла путем декодирования archives.tar.ecc
. Я думаю, что это будет отличная идея, если сетевое соединение нестабильно.
Интересно, есть ли какое-нибудь программное обеспечение (с открытым исходным кодом), работающее в Linux, которое может удовлетворить мои потребности?
Какие-либо предложения?
tar
идут дальше - GNUtar
кодирует разреженные дыры в файлах метаданных заголовка и после извлечения любым POSIX-pax
совместимым архиватором генерирует файлы, содержащие информацию, необходимую для перестройки файла, или с помощью GNUtar
в исходный разреженный файл. Он использует в основном закодированные переменные заголовка, определяемые как указано POSIX дляpax
утилиты w /-o
.Ответы:
У меня возникла та же проблема, и я обнаружил, что решения, представленные в другом ответе, неприемлемы, поскольку программа / стандарт par2 включает создание отдельных файлов для восстановления и проверки. Мне, как и самому оригинальному аскеру, нужен один файл с кодами, исправляющими ошибки.
Я нашел программу rsbep, которая раньше была в менеджере пакетов, а затем нашел нужный код здесь: https://www.thanassis.space/rsbep.html
Это позволяет создать файл с кодами исправления ошибок Рида-Соломона, а затем извлечь исходный файл из, возможно, поврежденной версии ECC.
источник
rsbep
прозрачно, но это только поверх сценариев, которые работают на файловой основе.Вы заинтересованы в PAR2, который использует исправление ошибок Рида-Соломона. parchive - это спецификация формата файла ECC, для Linux вам понадобится PyPar или par2tbb , а в Windows вы используете графический интерфейс QuickPar .
источник
Если вы хотите, чтобы файл ecc был отделен от архива, вы можете использовать pyFileFixity, проект Python с открытым исходным кодом , целью которого является обеспечение PAR-подобной системы защиты следующего поколения от битового повреждения.
Если вы хотите, чтобы защита ecc была включена непосредственно в архив, вы можете использовать DAR с открытым исходным кодом , своего рода TAR следующего поколения, который позволяет генерировать как нетвердые (т. Е. Позволяет частичное извлечение поврежденных архивов), так и ecc ( используя PAR2) и изоляцию каталога (т.е. сохраните резервную копию дерева каталогов и метаданных файловой системы) непосредственно в архивах .dar.
источник
Другой похожий проект 2018 года - это Redupe, который, как представляется, обеспечивает как отдельное, так и встроенное исправление ошибок в файлах двумя отдельными инструментами:
Пример на веб-странице (изменен для краткости) выглядит аналогично вашему варианту использования:
reundupe
Затем можно использовать для восстановления файла и, возможно, исправить небольшие ошибки.источник