Контрольная сумма для файла восстановления

есть ли контрольная сумма файла, разработанная специально для восстановления одного файла (архива) с повреждением данных? Что-то простое, как хэш, который может быть использован для восстановления файла

Я пытаюсь архивировать некоторые резервные копии домашних и деловых файлов (не медиафайлов), сжимая их и датируя их. Самый большой архив в настоящее время работает около 250 ГБ. После того, как архив был создан, я сделал контрольную сумму MD5 на нем, передал архив на другой диск, а затем использовал MD5 для проверки файлы были переданы правильно и сохранены MD5 хэши с архивами для последующей проверки. Я планирую пытаться архивировать эти резервные копии 1-2 раза в год и хранить их на жестком диске и лентах, как позволяет бюджет.

текущий формат архива "Zipx" с самыми высокими настройками.

учитывая объем информации около 1-2 ТБ в год в настоящее время, я вижу, что у вас есть какое-то повреждение данных; особенно учитывая, что эти файлы находятся на потребительских дисках. Добавлять при этом резервные копии в конечном итоге передаются с диска на диск, на ленту и обратно, что первоначальный архив 250 ГБ может фактически быть много терабайт записанных и прочитанных данных, что увеличивает риск повреждения данных. И проверка MD5s после каждой передачи добавляет много времени, поскольку проверка MD5 ограничена вводом-выводом; проверка MD5 на архиве 250 ГБ занимает много времени, умноженное на все архивы, и MD5 не будут проверяться так часто, как им нужно.

Так предположения таковы:

  1. данные будут повреждены
  2. мы не узнаем об этом до тех пор, пока факт.
  3. из-за бюджетных ограничений и отсутствия "критически важных", у нас нет нескольких копий одних и тех же архивов резервных копий, только разные итерации резервных копий.
  4. мы хотим, чтобы свести к минимуму копии наших резервных копий, защищая от повреждения данных.
  5. если файл или два в архиве поврежден, и мы теряем данные, когда мы пытаемся восстановить; жизнь будет продолжаться. Это не критически важная вещь.
  6. архивы резервной копии и, надеюсь, не привыкнет больше, чем пару раз в десять лет или меньше. Оперативная резервная копия существует несжатой.

С этим предположением, как мы защищаем от повреждения данных.

хранение хэша MD5 только позволяет кому-то знать, соответствуют ли текущие данные исходные данные или нет. Это не позволяет кому-то, или помочь каким-либо образом, чтобы восстановить данные. То есть, если мне нужно восстановить из резервной копии и иметь повреждение данных в файле или файлах, которые мне нужны, MD5 фактически бесполезен.

так есть ли контрольная сумма, которая специально предназначена не только для проверки данных, но и для их восстановления? Вроде как ECC для памяти, но для файлов?

Примечание: я нашел parchive, но это, кажется, не настоящий и надежно годный к употреблению. Хотя мне может не понравиться, как они реализовали вещи, в целом parchive-это именно то, что я ищу, но не могу найти. Делает что-то parchive-как существуют, что это "производство" готовы?

обновление:
Выглядит как будто некоторые форматы архивов поддерживают восстановление, хотя единственным основным кажется WinRAR. Было бы предпочтительнее не получить заблокирован в формате просто для этого один вариант как большинство achiving форматов (75% + / - в связанном списке) не поддерживает восстановление.

13
задан Journeyman Geek
20.04.2023 11:11 Количество просмотров материала 3239
Распечатать страницу

1 ответ

Я сделал набор инструментов для этой цели, используя Reed-Solomon и назвал pyFileFixity (см. здесь список инструментов входит). Он работает в основном из командной строки, но экспериментальный графический интерфейс предоставляется, если вы действительно хотите попробовать его (просто используйте --gui в командной строке).

Я сделал этот инструмент, чтобы быть открытым исходным кодом и надежным, это единица тестирования на 83% (покрытие филиала). Вся библиотека широко комментируется, и я разработал кодек Рида-Соломона сам, все на чистом Python (так что весь проект автономный, нет никаких внешних библиотек), так это на будущее (как долго, как вы питона, 2 переводчика, но питон 3 версии в Работает). Он должен быть готов, я его использую регулярно сам и у меня несколько положительных отзывов, и любая дополнительная обратная связь очень приветствуется!

формат ecc, который я разработал, должен быть очень стабильным и устойчивым к коррупции, насколько это возможно исправление ecc-файлов (см. repair_ecc.py и индексные файлы). Проект даст вам все, чтобы курировать ваши данные, а также проверить свои курирование схеме (см. filetamper.py и resilency_tester.py можно проверить весь курирование схема используя make-файл, как файл с описанием курирование схема, так что вы можете включить свой конвертирование файлов, zip сжатие, pyFileFixity КВЦ расчет или другой ЕСС схема расчета и т. д. и проверьте, может ли ваш трубопровод курации выдержать некоторое количество случайного повреждения данных).

однако, ограничение в том, что расчеты займет довольно много времени, скорость в настоящее время ~1 МБ/с, хотя у меня есть планы использовать параллелизм, чтобы увеличить скорость в четыре раза. Тем не менее, вы можете видеть это как ограничение, и, к несчастью, я не думаю, что есть более быстрый зрелый код для исправления ошибок (Reed-Solomon в значительной степени единственный зрелый, LDPC приходит, но еще не существует).

альтернатива, если вам не нужно обеспечить все данные целостность, но, скорее, большинство целостности данных, заключается в использовании алгоритма архивирования, такого как ZIP DEFLATE, а затем вычислить хэш ECC только на заголовке, используя header_ecc.py (предоставляется в pyFileFixity). Это гарантирует, что ваш архив всегда будет открыт, и что большая часть данных внутри будет несжимаемой, но он не сможет исправить все изменения данных.

есть еще DAR формат архива, альтернатива к Смолке, которая позволяет обжать В а non-solid моды (так частичное распаковка поврежденных архивов возможно) и расчет хэша восстановления на основе PAR2, а также предлагает изоляцию каталога (то есть, метаданные, такие как дерево каталогов, сохраненных отдельно в качестве резервной копии). Но честно говоря, я не думаю, что вы получите много с точки зрения скорости с PAR2, и вы потеряете много с точки зрения избыточности (формат PAR2 также основан на Reed-Solomon, но у него есть много ограничений, которых нет в моей библиотеке, а также PAR2-это своего рода мертвый...).

таким образом, вы должны задуматься, стоит ли вам больше дублировать данные (пространство для хранения) или вычислять хэш ecc (время процессора и потребление электроэнергии). С точки зрения хранения, ECC хэш может быть любого размера, который вы хотите, но обычно 20%~30% - это много защиты (оптические диски имеют только ~5%, жесткие диски имеют меньше, и это уже работает очень хорошо!).

Если вы пересмотрите дублирование в качестве жизнеспособной альтернативы, вы также можете исправить свои данные, если вы убедитесь, что вы делаете минимум 3 копии вашего архива. Затем вы можете использовать побитовое большинством голосов, чтобы оправиться от повреждения данных (pyFileFixity предоставить скрипт Python, чтобы сделать это: replication_repair.py). Это не так упруга, как в ECC-код, даже если устойчивость тариф одинаков: в 3-х экземплярах предоставить вам 33% устойчивости курса (т. е. 2 резервные копии на 3 разделить на 2, это теоретический предел), но окно предохранения только 1 байт" ecc "(довольно" запасной") для 3 байт, тогда как с реальным код ecc используя pyFileFixity или PAR2, окно до 255 байт: вы защищаете 255 байт путем присваивать 168 байт как байты ecc (поэтому вы имеете (255-168)=87 байт защищенных 168 байтами ecc, на любой этап в любом архиве). Действительно, resilency ставка = 0.5 * соотношение байтов ECC, так что вам нужно, соотношении 66% байтов ECC получить 33% устойчивости курса. Но в конце концов, у вас есть схема дублирования, которая занимает 2x размер оригинального архива для достижения окна 1/3 байт, защищенных, в то время как схема ecc занимает всего 0,66 x дополнительное пространство для достижения защищен 87/255 байт. Интуитивно, это означает, что:

  • для схемы дублирования, если повреждено больше чем 1 байт, то байт потерян.
  • тогда как для схемы ecc, вам нужно получить больше чем 87 байт коррумпированных в строке потерять их. Если поврежденные байты распределены по всему архиву, это не проблема, потому что предел в 87 байтов на окно составляет 255 последовательных байтов.

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

1
отвечен gaborous 2023-04-21 18:59

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх