архив
Расширение имени файла | .par, .par2, .p??, (в будущем .par3) |
---|---|
Тип формата | Код стирания , архивный файл |
Parchive ( сумма , архива четности формально известная как спецификация набора томов четности). [1] [2] ) — это система стирающего кода , которая создает номинала файлы по контрольной сумме для проверки целостности данных с возможностью выполнения операций восстановления данных , которые могут исправить или восстановить поврежденные или отсутствующие данные.
Изначально Parchive был написан для решения проблемы надёжного обмена файлами в Usenet . [3] но его можно использовать для защиты любых данных от повреждения данных , гниения диска , битового гниения , а также случайного или злонамеренного повреждения. Несмотря на название, Parchive использует более продвинутые методы (в частности, коды с исправлением ошибок ), чем упрощенные с помощью четности методы обнаружения ошибок .
По состоянию на 2014 год PAR1 устарел, PAR2 готов к широкому использованию, а PAR3 представляет собой снятую с производства экспериментальную версию, разработанную автором MultiPar Ютакой Савадой. [4] [5] [6] [7] Исходный проект SourceForge Parchive неактивен с 30 апреля 2015 года. [8] Над новой спецификацией PAR3 работает с 28 апреля 2019 года автор спецификации PAR2 Майкл Нахас. Альфа-версия спецификации PAR3 опубликована 29 января 2022 г. [9] пока сама программа разрабатывается.
История
[ редактировать ]Parchive был предназначен для повышения надежности передачи файлов через группы новостей Usenet . Usenet изначально был разработан для неформального общения, а базовый протокол NNTP не был предназначен для передачи произвольных двоичных данных. Другое ограничение, которое было приемлемо для диалогов, но не для файлов, заключалось в том, что сообщения обычно были довольно короткими по длине и ограничивались 7-битным ASCII . текстом [10]
Для отправки файлов через Usenet были разработаны различные методы, такие как uuencoding и Base64 . Позднее программное обеспечение Usenet позволило использовать 8-битный расширенный ASCII , что позволило использовать новые методы, такие как yEnc . Большие файлы были разбиты на части, чтобы уменьшить эффект от поврежденной загрузки, но ненадежный характер Usenet остался.
С появлением Parchive можно было создавать файлы четности, которые затем загружались вместе с исходными файлами данных. Если какой-либо файл данных был поврежден или утерян при распространении между серверами Usenet, пользователи могли загрузить файлы четности и использовать их для восстановления поврежденных или отсутствующих файлов. Parchive включает в себя создание небольших индексных файлов (*.par в версии 1 и *.par2 в версии 2), которые не содержат никаких данных для восстановления. Эти индексы содержат хэши файлов , которые можно использовать для быстрой идентификации целевых файлов и проверки их целостности.
Поскольку индексные файлы были очень маленькими, они минимизировали объем дополнительных данных, которые нужно было загрузить из Usenet, чтобы убедиться, что все файлы данных присутствуют и не повреждены, или определить, сколько томов четности требуется для устранения любого повреждения или восстановления любого недостающие файлы. Они были наиболее полезны в версии 1, где тома четности были намного больше, чем короткие индексные файлы. Эти большие тома четности содержат фактические данные восстановления вместе с дубликатами информации в индексных файлах (что позволяет использовать их самостоятельно для проверки целостности файлов данных, если нет небольшого индексного файла).
В июле 2001 года Тобиас Рипер и Стефан Велус предложили спецификацию Parity Volume Set, и при содействии других участников проекта в октябре 2001 года была опубликована версия 1.0 спецификации. [11] Par1 использовал исправление ошибок Рида-Соломона для создания новых файлов восстановления. Любой из файлов восстановления можно использовать для восстановления отсутствующего файла из неполной загрузки .
Версия 1 стала широко использоваться в Usenet, но имела некоторые ограничения:
- Он был ограничен для обработки не более 255 файлов.
- Файлы восстановления должны были иметь размер самого большого входного файла, поэтому это не работало, когда входные файлы были разных размеров. (Это ограничивало его полезность без использования проприетарного инструмента сжатия RAR.)
- Алгоритм восстановления имел ошибку из-за недостатка [12] в научной статье [13] на чем оно основывалось.
- Он был тесно связан с Usenet, и считалось, что более общий инструмент может иметь более широкую аудиторию.
В январе 2002 года Говард Фукада предложил разработать новую спецификацию Par2 со значительными изменениями, согласно которым проверка и восстановление данных должны работать с блоками данных, а не с целыми файлами, и что алгоритм должен переключиться на использование 16-битных чисел, а не 8-битных. номера битов, которые использовал PAR1. Майкл Нахас и Питер Клементс подхватили эти идеи в июле 2002 года при дополнительном вкладе Пола Неттла и Райана Галлахера (которые оба написали клиентов Par1). Версия 2.0 спецификации Parchive была опубликована Майклом Нахасом в сентябре 2002 года. [14]
Затем Питер Клементс написал первые две реализации Par2: QuickPar и par2cmdline. Заброшенный с 2004 года, Пол Хоул создал phpar2, чтобы заменить par2cmdline. Ютака Савада создал MultiPar, чтобы заменить QuickPar. MultiPar использует par2j.exe (который частично основан на методах оптимизации par2cmdline) в качестве внутреннего механизма MultiPar.
Версии
[ редактировать ]Версии 1 и 2 формата файла несовместимы. (Однако многие клиенты поддерживают оба варианта.)
Пар1
[ редактировать ]Для Par1, файлов f1 , f2 , ..., fn , архив состоит из индексного файла ( f.par ), который представляет собой файл типа CRC без блоков восстановления, и ряда «томов четности» ( f.p01 ). , f.p02 и т. д.). Учитывая все исходные файлы, кроме одного (например, f2 ), можно создать недостающий f2, учитывая все остальные исходные файлы и любой из томов четности. В качестве альтернативы можно воссоздать два отсутствующих файла из любых двух томов четности и т. д. [15]
Par1 поддерживает до 256 исходных файлов и файлов восстановления.
Пар2
[ редактировать ]Файлы Par2 обычно используют следующую систему именования/расширения: имя_файла.vol000+01.PAR2 , имя_файла.vol001+02.PAR2 , имя_файла.vol003+04.PAR2 , имя_файла.vol007+06.PAR2 и т. д. Число после «+» " в имени файла указывает, сколько блоков он содержит, а число после "vol" указывает номер первого блока восстановления в файле PAR2. Если в индексном файле загрузки указано, что отсутствуют 4 блока, самый простой способ восстановить файлы — загрузить filename.vol003+04.PAR2 . Однако из-за избыточности имя файла.vol007+06.PAR2 допустимо также . Существует также индексный файл filename.PAR2 , он по функциям идентичен небольшому индексному файлу, используемому в PAR1.
Спецификация Par2 поддерживает до 32 768 исходных блоков и до 65 535 блоков восстановления. Входные файлы разбиваются на несколько блоков одинакового размера, поэтому файлы восстановления не обязательно должны иметь размер самого большого входного файла.
Хотя Unicode упоминается в спецификации PAR2 как опция, большинство реализаций PAR2 не поддерживают Unicode.
Поддержка каталогов включена в спецификацию PAR2, но большинство или все реализации ее не поддерживают.
Пар3
[ редактировать ]Спецификацию Par3 изначально планировалось опубликовать как усовершенствованную версию спецификации Par2. Однако на сегодняшний день [ когда? ] исходный код остается закрытым владельцем спецификации Ютакой Савадой.
Обсуждение нового формата началось в разделе проблем GitHub поддерживаемой вилки par2cmdline 29 января 2019 года. Обсуждение привело к созданию нового формата, который также называется Par3. Спецификация нового формата Par3 опубликована на GitHub , но по состоянию на 28 января 2022 года остается альфа-проектом. Спецификация написана Майклом Нахасом, автором спецификации Par2, при помощи Ютаки Савады, Animetosho и Malaire.
Новый формат утверждает, что имеет множество преимуществ по сравнению с форматом Par2, в том числе:
- Поддерживает более 2 16 файлы и более 2 16 блоки.
- Поддерживает упаковку небольших файлов в один блок, а также дедупликацию при появлении блока в нескольких файлах.
- Поддерживает имена файлов UTF-8 , права доступа к файлам, жесткие и программные ссылки.
- Поддерживает встраивание данных PAR в другие форматы, такие как ZIP-архивы или образы дисков ISO .
- Поддерживает «добавочное резервное копирование», когда пользователь создает файлы восстановления для какого-либо файла или папки, изменяет некоторые данные и создает новые файлы восстановления, повторно используя некоторые из старых файлов.
- Поддерживает больше алгоритмов кода исправления ошибок (таких как LDPC и разреженная случайная матрица ).
- Заменена хеш-функция MD5 в Par2 на BLAKE3 .
- Поддерживает пустые каталоги.
- Поддерживает права доступа к файлам.
- Поддерживает жесткие ссылки и символические ссылки.
Программное обеспечение
[ редактировать ]Мультиплатформенность
[ редактировать ]- par2+tbb ( GPLv2 ) — параллельная (многопоточная) версия par2cmdline 0.4 с использованием TBB . Совместим только с x86 процессорами на базе . Он доступен в системе портов FreeBSD как par2cmdline-tbb .
- Исходный par2cmdline — (устарел). Доступен в системе портов FreeBSD как par2cmdline .
- Ответвление par2cmdline поддерживается BlackIkeEagle.
- par2cmdline-mt — еще одна многопоточная версия par2cmdline, использующая OpenMP , GPLv2 или более позднюю версию. В настоящее время объединен с форком BlackIkeEagle и поддерживается там.
- ParPar ( CC0 ) — это высокопроизводительный многопоточный клиент PAR2 и Node.js. библиотека Не поддерживает проверку или восстановление, в настоящее время он может создавать только архивы PAR2.
- par2deep ( LGPL-3.0 ) — рекурсивно создавайте, проверяйте и восстанавливайте файлы par2 как в командной строке, так и с помощью графического пользовательского интерфейса. Он доступен в системе индекса пакетов Python как par2deep .
Окна
[ редактировать ]- MultiPar QuickPar (бесплатное ПО) — основан на функциях и графическом интерфейсе и использует par2j.exe Ютаки Савады в качестве серверной части PAR2. MultiPar поддерживает несколько языков Unicode. Название MultiPar произошло от «многоязычного клиента PAR». MultiPar также проверен на работу с Wine под TrueOS и Ubuntu , а также может работать с другими операционными системами. [16] [17] Хотя компоненты Par2 имеют (или будут) с открытым исходным кодом, графический интерфейс MultiPar поверх них в настоящее время не является открытым исходным кодом. [18]
- QuickPar (бесплатное ПО) — не поддерживается с 2004 года, заменен MultiPar.
- phpar2 — расширенный par2cmdline с многопоточностью и высокооптимизированным ассемблерным кодом (примерно на 66% быстрее, чем QuickPar 0.9.1)
- Зеркало — первая реализация PAR, не поддерживаемая с 2001 года.
Мак ОС Х
[ редактировать ]ПОСИКС
[ редактировать ]Программное обеспечение для POSIX- совместимых операционных систем:
- Пар2 для KDE 4
- PyPar2 1.4 , интерфейс для par2.
- ГПар2 2.03
См. также
[ редактировать ]- Сравнение файловых архиваторов . Некоторые файловые архиваторы способны интегрировать данные четности в свои форматы для обнаружения и исправления ошибок:
- RAID – уровни RAID уровня RAID 5 и выше используют данные четности для обнаружения и устранения ошибок.
Ссылки
[ редактировать ]- ^ Re: Исправление к Parchive в Википедии , Архивировано 14 октября 2014 г. в ответе № 3 Wayback Machine , Ютака Савада: «Их официальное название — «Спецификация набора томов с четностью 1.0» и «Спецификация набора томов с четностью 2.0».
- ^ Re: Исправление к Parchive в Википедии , ответ № 3, Ютака Савада: «Их официальное название — «Спецификация набора томов с четностью 1.0» и «Спецификация набора томов с четностью 2.0».
- ^ «Parchive: набор томов архива четности» . Проверено 29 октября 2009 г.
Первоначальная идея этого проекта заключалась в том, чтобы предоставить инструмент для применения концепций восстановления данных RAID-подобных систем для публикации и восстановления многочастных архивов в Usenet.
- ^ «возможность создания нового файла PAR3» . Архивировано из оригинала 7 июля 2012 г. Проверено 1 июля 2012 г.
- ^ «Вопрос об использовании вами PAR3» . Архивировано из оригинала 9 марта 2014 г. Проверено 1 июля 2012 г.
- ^ «Риск необнаружимой запланированной модификации» . Архивировано из оригинала 9 марта 2014 г. Проверено 1 июля 2012 г.
- ^ «Предложение по спецификации PAR3 не завершено по состоянию на апрель 2011 г.» . Архивировано из оригинала 9 марта 2014 г. Проверено 1 июля 2012 г.
- ^ «Parchive: инструмент архивирования четности» . 30 апреля 2015 года . Проверено 20 мая 2020 г.
- ^ «Спецификация набора томов четности 3.0 [АЛЬФА-ПРОЕКТ 28 января 2022 г.]» . Майкл Нахас, Ютака-Савада, аниметошо и малайр.
- ^ Кантор, Брайан; Лэпсли, Фил (февраль 1986 г.). «Коды символов» . Протокол передачи сетевых новостей . IETF . п. 5. сек. 2.2. дои : 10.17487/RFC0977 . РФК 977 . Проверено 29 октября 2009 г.
- ^ Нахас, Майкл (14 октября 2001 г.). «Спецификация набора томов четности v1.0» . Проверено 19 июня 2017 г.
- ^ Планк, Джеймс С.; Дин, Ин (апрель 2003 г.). «Примечание: исправление к учебнику 1997 года по кодированию Рида-Соломона» . Проверено 29 октября 2009 г.
- ^ Планк, Джеймс С. (сентябрь 1997 г.). «Учебное пособие по кодированию Рида-Соломона для обеспечения отказоустойчивости в RAID-подобных системах» . Проверено 29 октября 2009 г.
- ^ Нахас, Майкл; Клементс, Питер; Неттл, Пол; Галлахер, Райан (11 мая 2003 г.). «Спецификация набора томов четности 2.0» . Проверено 29 октября 2009 г.
- ^ Ван, Уоллес (25 октября 2004 г.). «Поиск фильмов (или телешоу): восстановление отсутствующих файлов RAR с помощью файлов PAR и PAR2» . Украдите эту книгу по обмену файлами (1-е изд.). Сан-Франциско, Калифорния : Пресса без крахмала . стр. 164–167 . ISBN 978-1-59327-050-6 . Проверено 24 сентября 2009 г.
- ^ «MultiPar работает с PCBSD 9.0» . Архивировано из оригинала 28 сентября 2013 г. Проверено 27 февраля 2012 г.
- ^ Работаем над Ubuntu 18.04 через Wine. [ мертвая ссылка ]
- ^ «связался с вами и спросил об исходном коде» . Архивировано из оригинала 26 сентября 2013 г. Проверено 21 сентября 2013 г.