Вы здесьcd-rr - cd-R eRRoR coRRectoR
Опубликовано вс, 04/11/2012 - 16:31 пользователем Рыжий Тигра
Фильмам, программам и базам данных, безвременно погибшим из-за ошибок на компакт-дисках, посвящается. Предлагаю вниманию публики пакет программ для защиты информации на компакт-дисках (и не только): cd-rr (сокращение от cd-r error corrector). Способ защиты основан на старой доброй идее избыточности данных (redundancy; конкретно использованы коды Рида-Соломона aka RS-коды), и программ подобного рода - уже великое множество: тут и знаменитый RAR с его recovery-record'ами и recovery-volume'ами, и славный среди фидошников parchive, и почтенная бабушка Альфа-Лоза... Но ни одна из них не годилась для защиты данных на дисках формата XCD, а именно это мне было позарез нужно в далёком 2003 году, так что пришлось написать свою примочку. А потом она обросла дополнительными возможностями типа защиты обычных ISO CD-R и даже флоппи-дисков, созрела и в 2005 году впервые вышла в свет - тогда ещё не опен-сорсная, а просто фриварная. В начале 2007-го, после выхода версии 1.29, я её забросил, хотя изредка извлекал архив с исходниками и задумывался - а что бы ещё такого доулучшить. :-) Подробное описание всего пакета - см. в следующем посте. Описание большое, поэтому выкладка может растянуться на несколько дней. Ещё один отдельный пост отвожу под выдержки из уже накопившихся обсуждений, вопросов, ответов, предложений и т.д. 02/11/2012 Последняя на данный момент версия пакета: cd-rr-1.30 - исходные тексты, программы под win32 и под Linux на x86.
|
Вход на сайтПоиск по блогам и форумамUser menuПоследние комментарии
DGOBLEK RE:Подайте бедному копеечку на книжку с литреса... 2 часа
larin RE:Оплатил, но абонемент не отображается 3 дня sd RE:Fishing 3 дня Алексей111111111111 RE:Оплатила,но абонемент не отображается 5 дней sd RE:Доступ 27 5 дней kopak RE:Беженцы с Флибусты 1 неделя Isais RE:Вадим Иванович Туманов - Всё потерять - и вновь начать с... 1 неделя Isais RE:Семейственность в литературе 1 неделя Isais RE:Древний Рим. Подборка книг 1 неделя Саша из Киева RE:"Экс" и "нео": разноликие правые 1 неделя medved RE:Предупреждение: "зеркала" флибусты 3 недели Isais RE:Соседи 3 недели babajga RE:Как сова отправилась в отпуск 1 месяц Саша из Киева RE:Горящие паруса 1 месяц Саша из Киева RE:Подвиг героев - судьба страны. МНР: люди и годы 1 месяц commodore RE:Письма 1 месяц Саша из Киева RE:Три минуты истории 1 месяц nehug@cheaphub.net RE:Как бы с этим побороться и побороть? 2 месяца Впечатления о книгах
mysevra про Яворницкий: Том 1. Быт запорожской общины (История, Военная документалистика)
25 07 Монументальный труд. Мне, конечно же, наиболее интересным показался первый том. Оценка: отлично!
mysevra про Далин: Болотный шёлк (Фэнтези)
25 07 Вроде зарисовка, а для кого-то – целая счастливая жизнь. Красиво, как всегда у этого автора. Оценка: отлично!
mysevra про Сапковский: Распутье Воронов (Фэнтези)
25 07 Вот и раскрыта тайна резни в Каэр Морхене. Геральт тут непривычный, этакий большелапый лопоухий щенок, но уже с правильными, узнаваемыми чертами, накось. Прочитала с удовольствием, единственный минус – мало. Оценка: отлично!
OldF про Ангелов: Народный словарь СВО (Документальная литература, Юмористическая проза, О войне, Новелла, Сатира)
25 07 Попытка исторгнуть нечто со спущенными трусами. Потратил пару минут на просмотр предыдущих выс***в, этот точно с диагнозом, неизлечим. Оценка: нечитаемо
Саблезубый Заяц про Герасименко: Огонь сильнее мрака (Юмористическая фантастика, Научная фантастика, Городское фэнтези)
24 07 Почему книга отдельно? Это же из серии "Пневма".
Александр Лагода про Маканин: Удавшийся рассказ о любви [сборник] (Современная проза)
24 07 Файл невалиден. Готовлю замену.
StrelaVV про Карелин: Лекарь Империи. Книга 2 [СИ] (Боевая фантастика, Попаданцы, Самиздат, сетевая литература)
24 07 Первая книга понравилась, продолжение есть - читаю... Оценка: отлично!
Олег Макаров. про Шопперт: КВЖД [СИ] (Альтернативная история, Попаданцы, Самиздат, сетевая литература)
23 07 Забавно. Попаданец не борзеет, даже песен и стихов не ворует из будущего. Прогрессорствует довольно-таки аккуратно в рамках своих возможностей, но без фанатизма. Хотя странно, что школьный учитель физики круто умеет в военизированное ……… Оценка: нечитаемо
Олег Макаров. про Ямской приказ
23 07 Задумка очень интересная, но написано весьма коряво. Прямо как будто школьник... Диалоги не живые. Тяжело читать. Бросил на середине первой книги Искренне жаль. Могла бы быть классная серия
Aleks_Sim про Грушевский: Історія української літератури т.4 (Литературоведение)
22 07 Не вычитанный совсем после плохого OCR текст Оценка: нечитаемо
francuzik про Никл: Рожденный, чтобы жечь! (Боевая фантастика, Фэнтези, Самиздат, сетевая литература)
21 07 На удивление книга понравилась. Политики совсем нет зато есть юмор. Буду ждать продолжения. Оценка: хорошо
дядя_Андрей про Деметер: Хроники Космического Патруля [СИ] (Боевая фантастика, Самиздат, сетевая литература)
21 07 Предупреждаю сразу, что я ни разу не «заклёпочник», поэтому не стану умножать единицу массы на единицу скорости и делить всё это на единицу гравитации. Это не моё. Просто поделюсь тем, за что зацепился глаз, когда читал. 1. Очень ……… Оценка: хорошо |
Комментарии
cd-rr - cd-R eRRoR coRRectoR: документация
Этот пост будет неоднократно правиться - тут будет документация на весь пакет cd-rr и её будет много. Поэтому прошу пост ответами не подпирать!
Глава 1: Начальные сведения.
Что и как оно делает
Работают обе программы до смешного просто. :-)
Как его запускать
Обе программы - rrenc и rrdec - построены на стандартном юниксовом консольном интерфейсе командной строки. Кто работал с DOS'ом или UNIX'ом - знают. Кто не в курсе - спрашивайте (у меня или у тех, кто знает ;-) ). Кто знает ссылку на толковое описание на русском - делитесь.
Итак, программы отзываются на стандартный ключ -h (или --help) и выдают список параметров.
Формат командной строки кодера:
rrenc <обязательные-ключи> [ необязательные-ключи ] <размер> <RR-список> [ RR-данные ]
Формат командной строки декодера:
rrdec <обязательные-ключи> [ необязательные-ключи ]
Глава 2: Первое знакомство.
Как им управлять
Рассмотрим основные ключи, общие для обеих программ:
- -h, --help
- ну, это понятно. Правда, подсказка будет выведена на корявом английском (так уж оно исторически сложилось...), но зато она всегда самая свежая. :-)
- -@ <файл>.rrt, --input-list=<файл>.rrt
- список обрабатываемых файлов (.rrt-файл). Параметр обязательный, значения по умолчанию не имеет. Путь к списковому файлу никак не соотносится ни с --source-dir, ни с --target-dir. Описание форматов списковых файлов будет в следующей главе.
- -s <путь>, --source-dir=<путь>
- базовый путь к дереву подкаталогов, в которых лежат защищаемые файлы. Относительно него строятся пути к файлам, перечисленным во входных списках; он же, как правило, отображается на корневой каталог компакт-диска при его создании. Пути к файлам и каталогам, задаваемые в других параметрах, никак с этим путём не соотносятся. Значение по умолчанию: текущий каталог.
- -t <путь>, --target-dir=<путь>
- для rrenc: базовый путь к формируемым файлам - он нужен, к примеру, чтобы рассчитать защитные данные для файлов на компакте (или на сетевом диске, доступном только на чтение). Значение по умолчанию: копия --source-dir (текущий каталог, если --source-dir тоже не задан);
- для rrdec: базовый путь к дереву подкаталогов, куда будут восстанавливаться файлы. Значения по умолчанию не имеет. Если не задан - восстановление не производится, а выполняется только проверка на пригодность к восстановлению.
- -o <база>, --output-base=<база>
- базовый путь (вернее, имя с путём, но без расширения) для файлов программы m2cdm. Значения по умолчанию не имеет. Если задан - во время защиты или восстановления создаётся файл параметров для m2cdm с именем <база>.um2. Если потом запустить m2cdm с параметром -paramfile <база>.um2 - будет сгенерирован образ диска (файлы <база>.cue, <база>.bin, <база>.toc), из которого можно нарезать болванку большинством программ для записи компакт-дисков или смонтировать образ большинством программ-эмуляторов.
- -e <расширение>, --form2-ext=<расширение>
- расширение имени, которое будет присвоено XCD-файлам. Значение по умолчанию: "xcd". (Вообще-то всюду, в том числе и в m2cdm, принято расширение по умолчанию "dat", но это расширение имеют и файлы реестра в Windows 95/98, и базы данных Clarion'а, и ещё какие-то системные данные... В конце концов, "xcd" - вполне достойное расширение для файлов на компакт-дисках в формате XCD. :-) )
- -l <метка>, --volume-label=<метка>
- метка диска. На процесс защиты эта запись не влияет. В файл параметров для m2cdm (см. ключ --output-base) добавляется команда о присвоении образу метки.
- -w, --overwrite
- разрешает перезаписывать выходные файлы. В противном случае программы прекращают работу, если хотя бы один из выходных файлов уже существует - чтобы случайно не затереть (а вдруг там что-то ценное? :-) ).
- -c, --no-check-hdr
- разрешает проверять защищаемые файлы на XCD-формат только по расширению имени(это существенно уменьшает время начального типирования файлов). Иначе проверяется начало каждого защищаемого файла на предмет наличия в нём заголовка, типичного для .xcd-файла, - это долго, но, возможно, надёжнее.
- -v, --verbose
- задаёт повышенный уровень "болтливости" программы. Полезно для выяснения причин, почему программа работает не так, как надо. Болтовня идёт на английском языке, поэтому в нормальных условиях раздражает. :-)
- -q, --quiet
- наоборот, "молчаливый" режим - полезен, если списковый файл проверен, батники отлажены и можно давать записанный диск чужим людям. :-) Выводятся только сообщения о серьёзных ошибках (типа переполнения диска или нехватки памяти).
Формат входного списка для каждой программы свой. Рассмотрим сначала более простой формат - список для кодера. Поддерживаются записи следующих типов:Если файл, описанный в списке как защищаемый, не существует - выводится сообщение об ошибке и программа завершает работу. Если же отсутствует незащищённый файл - не страшно, он всё равно включается в список и его можно включить позже, но при восстановлении его длина и дата/время проверяться не будут (подробности см. в описании формата .rrt-файла).
Для версий до 1.19 включительно - в именах файлов и каталогов не допускались русские буквы. Кроме того, если среди имён файлов и/или каталогов были длинные имена и/или имена, содержащие что-либо кроме букв, цифр и знака подчёркивания и заказывался управляющий файл для m2cdm, - надо было его править вручную, заменив строку -isolevel1 на более высокий уровень (см. встроенную справку по m2cdm). Начиная с версии 1.20, уже работает поддержка русских букв (см. --ansi-charset для rrenc) и автоопределение уровня ISO (правильная установка ключа -isolevel при формировании файла параметров для m2cdm).
(Cоветую также принять меры, чтобы (в случае, если .rrd-файл располагается на одном компакт-диске с защищаемыми файлами) он был записан после всех защищаемых файлов - внешний край диска обычно наиболее уязвим для повреждений, а защищённые файлы всё же ценнее, чем избыточность. При использовании m2cdm это сделать несложно - файлы на создаваемом образе сортируются по глубине вложенности каталога, т.е. вложенность .rrd-файла должна быть не меньше вложенности самого глубоко вложенного из защищаемых файлов.)
Глава 3: Копаем глубже.
Теперь пройдёмся по оставшимся опциям.
Advanced опции кодера.
Advanced опции декодера.
Глава 4: Как-со-всёй-этой-фигнёй-взлететь HOWTO
Уфф, теперь можно попробовать воспользоваться свежепрочитанным. :-)
Всё нижеследующее удобнее всего делать под FAR Manager'ом - у вас всё будет под рукой: и текстовый редактор, и командная строка - а больше, в общем-то, ничего и не надо! ;-)
Итак, по пунктам.
0) Cоздание входного списка файлов для rrenc.
1) Защита готового компакт-диска в формате ISO 9660 (т.н. "обычного") ("внешняя защита").
Примерно так:
2) Создание защищённого компакт-диска в формате ISO 9660 (назовём это форматом RR-ISO :-) ).
Почти как в предыдущем случае. Отличия:
3) Создание защищённого XCD-диска (формат RR-XCD).
Гибрид предыдущего случая и классической схемы создания XCD (см., например, домашнюю страничку DeXT'а, "On the way to XCD - or how to turn 700MB CDs into 800MB ones" или страничку XCD на SourceForge). (Правда, использовать cdrtfe, m2cdmgui или иной GUI-frontend, увы, не получится - пока не будет готов frontend к rrenc (я уже доделываю протокол интерфейса).))
Отличия от "обычного" компакта:
4) Восстановление засбоившего компакт-диска.
Собственно то, ради чего всё затевалось. :-) Сначала рассмотрим самый простой случай - сторонние программы не используются, управляющий файл и файл с избыточностью лежат на самом компакте (формат RR-ISO или RR-XCD):
- выбрать каталог, куда восстанавливать файлы, и каталог, где собирать новый образ (если надо (желательно, чтобы каталоги были разными));
- запустить программу:
rrdec -s <путь-к-компакт-диску> -@ <путь\файл>.rrt -t <каталог-куда-восстанавливать> -wa -q;
- если потом надо будет из восстановленных файлов записать новый диск (особенно в случае, если это RR-XCD-диск) - лучше сразу добавить в строку запуска параметр --output-base=<каталог-для-образа\имя-образа>, а после восстановления - запустить
m2cdm -paramfile <каталог-для-образа\имя-образа>.um2.
Более сложный случай - защитные данные лежат не на компакте (например, внешняя защита - по схеме 1). Отличия от предыдущего варианта:Восстановление сбойного компакт-диска с помощью сторонних программ - может понадобиться при большом количестве сбоев. Программы для восстановления сбойных дисков обычно позволяют восстановить приличную часть повреждённых секторов, просто повторяя попытки считать сектор; если же после определённого числа попыток считать сектор не удалось - в восстановленный файл записывается сектор, заполненный нулями, либо прочитанная часть сектора, либо файл "схлопывается" на размер повреждённого сектора - каждая программа делает по-своему. :-(
Я использую бесплатную программу CDCheck - в режиме "Recover" она позволяет выставить число попыток чтения "битого" сектора (или тайм-аут на попытки) и при неудаче заполняет сектор нулями. Кроме того, CDCheck разбирается со сбойными секторами намного быстрее, чем стандартный файловый доступ, - пара секунд на попытку чтения (вместо полминуты).
Предлагаю к использованию следующую схему - отлично восстанавливает ISO-диски с внешней защитой и RR-ISO (к сожалению, RR-XCD берутся не столь изящно - CDCheck читает только фиксированными порциями по 2048 байт):
Возможны, само собой, ложные срабатывания - если в правильных данных были длинные (по 2 килобайта) последовательности нулей (например, такое возможно в заголовках .avi-файлов), но они увеличивают время восстановления на чуть-чуть (несколько секунд) и ими можно пренебречь. (А если таких секторов слишком много - может, в дальнейшем имеет смысл перед записью на болванку сжимать такие файлы архиваторами? :-) )
Этот пост будет неоднократно правиться - тут будет документация на весь пакет cd-rr и её будет много. Поэтому прошу пост ответами не подпирать!
Отв: cd-rr - cd-R eRRoR coRRectoR
Спасибо за проделанную работу. Хотя дисками я и не пользуюсь. ))
Отв: cd-rr - cd-R eRRoR coRRectoR
Отв: cd-rr - cd-R eRRoR coRRectoR
Старый винт на 80 гигов. А вообще - есть же облака и другие файлохранилища. На Яндекс вроде зашифрованные файлы заливать разрешили.
Мой идеал - перфокарты из титана. Но он недостижим. ))
Отв: cd-rr - cd-R eRRoR coRRectoR
cd-rr - cd-R eRRoR coRRectoR: обсуждения со всего мира :-)
В этот пост буду собирать интересные выдержки про cd-rr с разбросанных по инету вопросов с ответами, обcуждений, предложений и т.д. Тоже прошу на пост не отвечать, чтобы не заблокировать его правку.
Отв: cd-rr - cd-R eRRoR coRRectoR
(тоскливо) И понимают же люди, о чем говорят......
Отв: cd-rr - cd-R eRRoR coRRectoR
Так вот, в первом случае моя прога поможет, во втором - увы, таки нет. :-(((((((
cd-rr готовится к пробою 16-битного барьера
Свежие новости с фронтов разработки: найден способ быстро (на полпорядка-порядок быстрее, чем сейчас) считать 32-битные коды Рида-Соломона вместо используемых сейчас 16-битных. Практически это означает возможность перекрывать массивы не по нескольку десятков тире сотен тысяч секторов, как на компакт-диске, а по несколько миллиардов, т.е. за сравнительно разумные временны́е затраты защищать дофигатерабайтный винчестер или FMD-диск третьего поколения. Про такую мелочь, как DVD и блу-рейки, я вообще молчу... :-)
Отв: cd-rr - cd-R eRRoR coRRectoR
Хотел спросить: "Тигра, Тигра, где ты был?"...
Проскроллил и понял.
Отв: cd-rr - cd-R eRRoR coRRectoR
cd-rr: грядут улучшения
Некто persicum подкинул идею насчёт раза в три ускорить умножение в cd-rr. Сижу, реализую.
Интересный тип. Чистый Nazgul. :-) На форуме ICE ECC его даже забанили пожизненно за неудобные вопросы. :-)))))))
Отв: cd-rr - cd-R eRRoR coRRectoR
Наиболее ценное - 16-20 Гиг храню на 2-3 разных носителях. Одновременный выход из строя 2-х разных носителей - крайне (если вообще ....) маловероятное событие. Малоценное, если что - туда и дорога...
Отв: cd-rr - cd-R eRRoR coRRectoR
Если носитель типа "дохнет посекторно" (flash'ка, CD- или DVD-R) - то неплохо коррелируются номера дохнущих в первую очередь секторов у болванок из одной партии. Имел счастье. :-(