Копируем битые диски в Убунту

Копируем битые диски в Убунту

В последнее время ситуация с носителями, типа CD/DVD дисков, уже не так актуальна как 2-4 года назад, в наше время уже во всю популярны флешки и внешние жесткие диски, но бывают еще случаи, когда нужно скопировать диск, а он либо царапаный, либо записан не корректно и программа для записи выплевывает его. Что в таких случаях может нам предложить любимая Ubuntu?

На первый взгляд ситуация не радужная, но после некоторых проб и экспериментов могу сказать, что не все уж так плохо. Кто, как я, привык к графическому интерфейсу, может воспользоваться программой DVDisaster. Если мало, то можно запустить через 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

А если вы беспокоитесь о стабильной работе операционной системы, то советую настроить резервное копирование при помощи утилиты Remastersys Backup.

Ну вот в принципе и заканчивается данный обзор. Могу лишь написать, что по умолчанию программа recoverdm очень медленно копировала битый диск, в отличии от gddrescue и ddrescue. Я остановил свой на выбор именно на них.