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

Опубликовано:

В последнее время ситуация с носителями, типа 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. Я остановил свой на выбор именно на них.

Понравилась статья, расскажи о ней друзьям, нажми кнопку!