Чи можна додати до одного файлу коди виправлення помилок (BCH, RS чи ін.)?


12

Наскільки мені відомо, архіви WinRAR можуть містити ECC (коди виправлення помилок), тому якщо архів трохи пошкоджений, то він може бути виправлений сам по собі.

Наприклад, я можу перший закодувати archives.tarдо archives.tar.ecc, а потім завантажити його на моєму сервері. Якщо після завантаження клієнтом файл трохи пошкоджений, його можна виправити автоматично, не завантажуючи файл заново шляхом розшифровки archives.tar.ecc. Я думаю, це буде чудовою ідеєю, якщо мережеве з'єднання нестабільне.

Цікаво, чи є в Linux якесь програмне забезпечення з відкритим джерелом, яке може задовольнити мої потреби.

Будь-які пропозиції?


певною мірою це вже відбувається - поле chksum заголовка кожного файлу є сумою складових байтів цього заголовка - для включення поля розміру. Багато tarз них піде далі - GNU tarкодує розріджені файлові отвори у метаданих заголовків, а після вилучення будь-яким paxсумісним архіватором POSIX створює файли, що містять інформацію, необхідну для відновлення файлу, або GNU tarу вихідний розріджений файл. Він використовує в основному кодовані змінні заголовка, визначені, як визначено POSIX для paxутиліти w / -o.
mikeserv

Відповіді:


6

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

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

Це дозволяє створити файл із кодами виправлення помилок Reed-Solomon, а потім отримати вихідний файл із, можливо, пошкодженої версії ECC.


rsbep - це чудово! Але це дещо інакше: це ціла заморожена ОС, тому ви можете додавати файли всередину, але ви не можете змінювати те, що знаходиться всередині, і переміщатися трохи трохи громіздче. Але це дійсно цікавий підхід із використанням FUSE та open source.
габоровий

1
@gaborous, це неправда. Існує реалізація FUSE fs, використовуючи rsbepпрозоро, але це лише поверх сценаріїв, які працюють в режимі "файл за файлом".
nyov

6

Вас цікавить PAR2, який використовує виправлення помилок Reed-Solomon. parchive - специфікація формату файлу ECC, для Linux вам потрібен PyPar або par2tbb , а для Windows ви використовуєте GUI під назвою QuickPar .


1
Посилання на PyPar та par2tbb мені здаються невловимими. Я знайшов тут
Drist

2
Я думаю, що PyPar абсолютно не пов'язаний з виправленням помилок.
mbarkhau

2

Якщо ви хочете, щоб файл ecc був відокремлений від архіву, ви можете використовувати pyFileFixity, проект з відкритим джерелом Python, який має на меті забезпечити систему захисту, подібну до системи PAR від подібних бітів.

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


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 потім можна використовувати для відновлення файлу та, можливо, виправлення невеликих помилок.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.