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


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

Проверяем качество дисков

Программы для записи в Убунту

Проверяем «здоровье» HDD

R-Linux

Как правильно сохранить данные


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

  1. Очень полезная статья. Я пользовался «семёркой» с 2011 по конец 2015 годов — надоела. Поставил Ubuntu 14.04. Сейчас налаживаю виртуальную машину. Нужен «нормальный» образ Win 2000. Диск — имеет место быть. От слова — «есть». А вот нормального образа в сети не нашёл. Зато узнал как делать образы в Ubuntu. СПАСИБО.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *