Копируем «битые» диски в Убунту
В последнее время ситуация с носителями, типа CD/DVD дисков, уже не так актуальна как 2-4 года назад, в наше время уже во всю популярны флешки и внешние жесткие диски, но бывают еще случаи, когда нужно скопировать диск, а он либо царапаный, либо записан не корректно и программа для записи выплевывает его. Что в таких случаях может нам предложить любимаяUbuntu?
На первый взгляд ситуация не радужная, но после некоторых проб и экспериментов могу сказать, что не все уж так плохо. Кто, как я, привык к графическому интерфейсу, может воспользоваться программой [urlspan]DVDisaster[/urlspan]. Если мало, то можно запустить через Wine, к примеру ISOBuster, который можно скачать с торрент-трекеров, либо воспользоваться весьма неплохой бесплатной программой Non-Stop Copy.
Но мне оказалось и этого мало, и я захотел попробовать истинно линуксные программы. После моей беды с потерянными файлами, я начал уже без особой опаски относиться к Терминалу. Хотя я до сих пор не могу понять, как можно скажем кодировать видео из одного формата в другой, при этом создавать меню для DVD с фоном и фоновой музыкой и все это делать в консоли. Это ж сколько нужно команд вбить в Терминале, сколько всяких путей прописать, названий файлов и т.д. По мне такие вещи удобней делать исключительно с GUI интерфейсом, но опять таки, это сугубо мое мнение. Но вот что касается восстановления файлов, создания образов, копирования нечитаемых DVD дисков, то тут Терминал может оказаться как нельзя кстати и не такой уж он и страшный. Итак идем дальше.
dd
Программа dd. Очень старая и очень популярная среди линуксоидов программа. При помощии dd создают образы жестких дисков, флешек и других накопителей, создают образ системы и т.д. Она поблочно копирует файлы из одного места в другое. Чтобы скопировать «битый» DVD при помощи этой программы, выполним следующее:
dd if=/dev/cdrom of=image.iso conv=noerror
dev/cdrom — это ваш DVD привод
image.iso — образ копируемого DVD/CD диска
conv=noerror — параметр, который указывает, что нужно копировать, игнорируя ошибки
Это простейший пример, который показывает как можно использовать программу dd. При желании можно найти массу информации о данной программе: настройки, параметры и прочее.
Далее идет тяжелая артиллерия. Опытные пользователи говорят, что «битые» диски лучше всего копировать программами gddrescue (в Терминале пишем ddrescue) и dd_rescue. Несмотря на схожесть названий, это совершенно разные программы. Установить эти программы можно из Центра приложений Убунту. И добавлю от себя — gddrescue лучше чем dd_rescue. Итак идем далее.
gddrescue
Установим ddrescue. Установить можно из Центра приложений, либо командой:
sudo apt-get install gddrescue
- gddrescue копирует информацию из одного источника (винчестер, CD-ROM и т.д.) в другой, пытаясь восстановить данные если есть ошибки чтения.
- gddrescue не затирает выходной файл, если это не запрошено, поэтому при каждом запуске для одного и того же выходного файла делаются попытки заполнить пробелы.
- gddrescue работает абсолютно в автоматическом режиме.
- Если ведется журнал работы, то информация восстанавливается еще эффективее, потому что считываются лишь нужные блоки. Более того, восстановление можно прекратить когда угодно вам, а потом продолжить.
- Журнал все время сохраняется на диск. Поэтому, если копирование прервано, то его можно продолжить с минимальным повторным копированием.
Как использовать данную программу? Программа консольная, поэтому работать с ней будем в Терминале, собственно как и со всеми программами, которые описаны в этом обзоре.
Схема использования: ddrescue [options] infile outfile [logfile]
Параметры:
— h,--help
показать справку
— V,--version
показать номер версии
— b,--block-size=bytes
аппаратный размер блока на исходном устройстве [512]
— B,--binary-prefixes
использовать степени двойки в числах [по умолчанию SI]
— c,--cluster-size=blocks
число аппаратных блоков для разового копирования [128]
— C,--complete-only
не считывать данные дальше, чем указано в лог-файле
— e,--max-errors=n
максимально разрешенное количество областей с ошибками
— i,--input-position=pos
начальная позиция в исходном файле [0]
— n,--no-split
не стараться дробить области с ошибками
— o,--output-position=pos
начальная позиция в целевом файле [ipos]
— q,--quiet
минимум подробностей
— r,--max-retries=n
выйти после этого числа повторов чтения(-1=до бесконечн.)[0]
— s,--max-size=bytes
максимальный объём данных для копирования
— t,--truncate
очистить целевой файл перед записью
— v,--verbose
максимум подробностей
Полный список параметров можно посмотреть при помощи команды:
ddrescue -h
Пример использования:
ddrescue -v /dev/cdrom Recovered.iso ddrescue.log
В данном примере будет копироваться диск в приводе, с созданием образа Recovered.iso и лога ddrescue.log с применением параметра -v (максимум подробностей)
dd_rescue
Далее идет программа dd_rescue. Установить также можно через Центр приложений Убунту, либо в Терминале:
Схема использования: dd_rescue [options] infile outfile
Параметры:
— s ipos начальная позиция в исходном файле (default=0),
— S opos начальная позиция в целевом файле (def=ipos),
— b softbs размер блока для копирования (def=65536),
— B hardbs размер блока во время возникновении ошибок копирования (def=512),
— e maxerr окончание работы после установленного количества ошибок (def=0=infinite),
— m maxxfer максимальный объём копируемых данных (def=0=inf),
— y syncfrq частота запросов fsync к целевому файлу (def=512*softbs),
— l logfile имя файла для регистрации ошибок и вывода сводки (def=»»),
— o bbfile имя файла для регистрации номеров сбойных блоков (def=»»),
— r копирование данных в обратном направлении (def=forward),
— t очищать целевой файл перед записью (def=no),
— d/D использовать O_DIRECT для ввода/вывода (def=no),
— w окончание работы во время возникновения ошибок (def=no),
— a запись файла с пустотами (def=no),
— A всегда записывать блоки, заполняя нулями сбойные (def=no),
— i интерактивный режим: спрашивать перед перезаписью данных (def=no),
— f принудительный режим: пропустить ряд проверок (def=no),
— p сохранять права доступа и владельца файла (def=no),
— q минимум подробностей,
— v максимум подробностей,
— V вывести номер версии и выйти,
— h вывести данную справку и выйти.
Пример использования:
dd_rescue -v /dev/cdrom Recovered.iso
recoverdm
Установить recoverdm можно как и все предыдущие, в данном обзоре, программы из Центра приложений, либо командой:
sudo apt-get install recoverdm
Схема использования: recoverdm -t type -i file/devicein -o fileout [-l list] [-n retries] [-s speed]
Параметры:
— t тип данных
— i откуда копируем
— o восстановленный файл
— l этот файл будет содержать смещение из плохих(!) блоков
— n количество попыток чтения прежде чем перейдет к следующему сектору
— s скорость чтения приводов CD/DVD (по умолчанию 1х)
— r количество повторов при чтении с RAW
Пример использования:
recoverdm -i /dev/cdrom -o Recovered.iso
Ну вот в принципе и заканчивается данный обзор. Могу лишь написать, что по умолчанию программа recoverdm очень медленно копировала битый диск, в отличии от gddrescue и ddrescue. Я остановил свой на выбор именно на них.