Какие форматы архивных файлов обеспечивают защиту от повреждения файлов?

10

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

У меня есть тысячи крошечных файлов, и я отправляю их в архивы размером от 500 МБ до 4,2 ГБ перед отправкой на внешний жесткий диск. Но один сбой жесткого диска уничтожает весь архив или только один файл в архиве? Я боюсь, что один перевернутый бит может сделать бесполезными большие части архива.

Такие вещи, как проверки CRC, могут предупредить вас о существовании повреждения, но меня больше интересует возможность восстановления неповрежденных файлов из поврежденного архива. Какие форматы архивных файлов обеспечат наилучшую возможность восстановления после таких сбоев, либо благодаря собственному дизайну структуры архива, либо наличию дополнительных инструментов восстановления? Есть ли разница в этой возможности между файлами zip и iso?

sevenkul
источник
Я знаю, что по крайней мере одна из программ, которые я использую для синхронизации файлов, поддерживает многопоточное копирование, что, как мне кажется, уменьшает некоторую медлительность копирования большого количества маленьких файлов; Кроме того, хотя я должен был проверить, чтобы быть уверенным, у меня есть подозрение, что создание архива большого количества маленьких файлов также займет больше времени, чем создание архива для нескольких больших файлов, даже если сжатие не используется. Я не помню, если это проблема только для Windows или нет; iirc, есть некоторые программные решения для Linux, которые могут обрабатывать множество маленьких файлов в блоках, но я не могу вспомнить подробности.
JAB
Пожалуйста, снова откройте вопрос. Я перефразировал это, и теперь это должно быть более ясным. «Лучший» всегда будет основываться на мнении, но требование быть лучшим здесь совершенно ясно. Мало места для личных мнений ИМХО. Пожалуйста, удалите этот комментарий после повторного открытия.
Марсель

Ответы:

8

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

Переменная там будет, сколько урона вы хотели бы восстановить. Если вы хотите защитить от переворота в один бит, тогда ваш файл четности будет иметь размер всего 1 бит. Если вы хотите что-то в размере сектора диска, то, очевидно, это будет стоить вам дороже.

За этим стоит большая теория (см. Прямое исправление ошибок ), и она широко используется на практике. Например, это то, как компакт-диски могут противостоять определенной степени царапин и как сотовые телефоны могут поддерживать приемлемое качество вызовов по сравнению с соединениями с потерями.

Короче говоря, посмотрите на .parфайлы.

Ангстрем
источник
1
Спасибо, при поиске файлов четности я обнаружил, что запись восстановления WinRAR проще в повседневном использовании. Я также попробую QuickPar.
sevenkul
2
Одного бита данных для исправления ошибок недостаточно для исправления однобитовой ошибки в вашем n-битном файле данных. Вы можете обнаружить такую ​​ошибку с помощью одного бита, но для ее исправления вам нужно как минимум записать n битов.
Том Смит
4

Bup [1] выполняет резервное копирование и автоматически добавляет избыточность по четности, что делает бит-гниль крайне маловероятным. Катастрофический сбой диска - все еще вещь, поэтому мы можем использовать его с git-annex.

git-annex [2] управляет файлами, хранящимися во многих репозиториях, некоторые из которых могут храниться на вашем компьютере, флэш-накопителях, логине ssh, некоторых облачных сервисах или хранилище резервных копий bup [3], позволяя данным файлам проходить в значительной степени прозрачно по запросу или автоматически в любое хранилище, которое вы установили. Это также проект бесплатного программного обеспечения с открытым исходным кодом, финансируемый толпой, который был написан на Haskell с версиями, работающими на многих платформах, включая linux, mac, windows и android.

[1] https://github.com/bup/bup

[2] http://git-annex.branchable.com/

[3] http://git-annex.branchable.com/special_remotes/bup/

Юваль Лангер
источник
3

Но один сбой жесткого диска уничтожает весь архив или только один файл в архиве?

Если действительно нет альтернативы копированию всего в один большой архив, вам, вероятно, придется принять решение между использованием сжатого или несжатого архива.

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

Использование сжатых архивов может быть опасным, поскольку некоторые могут отказаться извлекать файлы, если возникает ошибка контрольной суммы, которая может быть вызвана, даже если изменяется только один бит файла архива.

Конечно, можно минимизировать риск, храня не сотни файлов в одном сжатом архиве, а сотни сжатых файлов в одном несжатом архиве.

gzip *
tar cf archive.tar *.gz

Хотя я никогда не видел много сжатых файлов в тарболле в дикой природе. Популярно только обратное (т.е. файлы tar.gz).

Есть ли разница между zip и iso файлами?

ZIP - это (в основном, но не обязательно) сжатый архив, а ISO - это формат, который указывает необработанные данные, низкоуровневые данные, скопированные с оптического диска в файл. Последний может содержать буквально все.

dulange
источник