воскресенье, 1 марта 2020 г.

par2 - Страхование файла от повреждения методом добавления избыточной информации для восстановления


В архиваторе WinRAR есть такая функция как добавление в RAR-архив избыточной информации, которая даст возможность восстановить архив, в случае его повреждения. Я долго искал подобное в Linux и вот обнаружил нечто подобное!

Есть такая штука как par2, расшифровывается как Parity Archive Volume Set, V.2. Алгоритм упреждающего исправления ошибок (FEC). Этот чудесный алгоритм даст вам надежду на то, что драгоценный файл, сохранённый на флешку, CD/DVD или куда-то ещё можно будет прочить спустя какое-то время. Первоначально алгоритм создали для обмена файлами в Usenet.

Кстати, болванки хранятся в сохранности около десяти лет, а потом портятся. У флешек тоже могут портится блоки. Кроме того флешка может мгновенно приходить в полную неработоспособность, печаль. Лучше хранить ценную информацию на жёстком диске в надёжном месте без сырости, мух и электромагнитных помех вокруг. В антистатическом пакете. Такой небольшой совет.

Установка утилиты для работы с par2 в Ubuntu Linux:

$ sudo apt-get install par2

Краткая инструкция по использованию утилиты par2.

Вывести справочную информацию: par2 -h

par2 c(reate) [опции] [файлы] : Создать PAR2 файлы
par2 v(erify) [опции] [файлы] : Проверить файлы, используя PAR2 файлы
par2 r(epair) [опции] [файлы] : Восстановить файлы, используя PAR2 файлы

Можно вместо команды"c", "v" и "r" использовать команды "par2create", "par2verify" или "par2repair".

Параметр -m указывает количество мегабайт используемой памяти. По умолчанию установлено значение "16". Если указать опцию -m512 скорость работы увеличится. Это актуально для современных компьютеров.

Файлы PAR2 именуются по следующему шаблону:

"[имя_застрахованного_файла].volXXXX+YYYY.par2"
XXXX -  указывает номер первого блока восстановления
YYYY - указывает число восстановительных блоков в файле

Простые примеры использования утилиты par2.

$ par2 c xubuntu-19.10-desktop-amd64.iso

Block size: 823988
Source file count: 1
Source block count: 2000
Redundancy: 5%
Recovery block count: 100
Recovery file count: 7

Opening: xubuntu-19.10-desktop-amd64.iso
Computing Reed Solomon matrix.
Constructing: done.
Wrote 16777200 bytes to disk
Wrote 16777200 bytes to disk
Wrote 16777200 bytes to disk
Wrote 16777200 bytes to disk
Wrote 15290000 bytes to disk
Writing recovery packets
Writing verification packets
Done

$ par2 v xubuntu-19.10-desktop-amd64.iso.par2

Loading "xubuntu-19.10-desktop-amd64.iso.par2".
Loaded 4 new packets
Loading "xubuntu-19.10-desktop-amd64.iso.vol000+01.par2".
Loaded 1 new packets including 1 recovery blocks
Loading "xubuntu-19.10-desktop-amd64.iso.vol001+02.par2".
Loaded 2 new packets including 2 recovery blocks
Loading "xubuntu-19.10-desktop-amd64.iso.vol003+04.par2".
Loaded 4 new packets including 4 recovery blocks
Loading "xubuntu-19.10-desktop-amd64.iso.vol007+08.par2".
Loaded 8 new packets including 8 recovery blocks
Loading "xubuntu-19.10-desktop-amd64.iso.vol015+16.par2".
Loaded 16 new packets including 16 recovery blocks
Loading "xubuntu-19.10-desktop-amd64.iso.vol031+32.par2".
Loaded 32 new packets including 32 recovery blocks
Loading "xubuntu-19.10-desktop-amd64.iso.vol063+37.par2".
Loaded 37 new packets including 37 recovery blocks
Loading "xubuntu-19.10-desktop-amd64.iso.par2".
No new packets found

There are 1 recoverable files and 0 other files.
The block size used was 823988 bytes.
There are a total of 2000 data blocks.
The total size of the data files is 1647968256 bytes.

Verifying source files:

Opening: "xubuntu-19.10-desktop-amd64.iso"
Target: "xubuntu-19.10-desktop-amd64.iso" - found.

All files are correct, repair is not required.

$ par2 r xubuntu-19.10-desktop-amd64.iso.par2

Loading "xubuntu-19.10-desktop-amd64.iso.par2".
Loaded 4 new packets
Loading "xubuntu-19.10-desktop-amd64.iso.vol000+01.par2".
Loaded 1 new packets including 1 recovery blocks
Loading "xubuntu-19.10-desktop-amd64.iso.vol001+02.par2".
Loaded 2 new packets including 2 recovery blocks
Loading "xubuntu-19.10-desktop-amd64.iso.vol003+04.par2".
Loaded 4 new packets including 4 recovery blocks
Loading "xubuntu-19.10-desktop-amd64.iso.vol007+08.par2".
Loaded 8 new packets including 8 recovery blocks
Loading "xubuntu-19.10-desktop-amd64.iso.vol015+16.par2".
Loaded 16 new packets including 16 recovery blocks
Loading "xubuntu-19.10-desktop-amd64.iso.vol031+32.par2".
Loaded 32 new packets including 32 recovery blocks
Loading "xubuntu-19.10-desktop-amd64.iso.vol063+37.par2".
Loaded 37 new packets including 37 recovery blocks
Loading "xubuntu-19.10-desktop-amd64.iso.par2".
No new packets found

There are 1 recoverable files and 0 other files.
The block size used was 823988 bytes.
There are a total of 2000 data blocks.
The total size of the data files is 1647968256 bytes.

Verifying source files:

Opening: "xubuntu-19.10-desktop-amd64.iso"
Target: "xubuntu-19.10-desktop-amd64.iso" - damaged. Found 1999 of 2000 data blocks.

Scanning extra files:


Repair is required.
1 file(s) exist but are damaged.
You have 1999 out of 2000 data blocks available.
You have 100 recovery blocks available.
Repair is possible.
You have an excess of 99 recovery blocks.
1 recovery blocks will be used to repair.

Computing Reed Solomon matrix.
Constructing: done.
Solving: done.

Wrote 1647968256 bytes to disk

Verifying repaired files:

Opening: "xubuntu-19.10-desktop-amd64.iso"
Target: "xubuntu-19.10-desktop-amd64.iso" - found.

Repair complete.

P.S. Есть замечание, что использование PAR2-файлов может "заполнить" inode в ФС ext4. Но, я не понял что это такое значит...

Источники:

Комментариев нет:

Отправить комментарий