gddrescue: средство восстановления данных с поврежденных носителей
Автор: Джон Карлайл-Клэрк (John Carlyle-Clarke)
Перевод: Алексей Бешенов
2008-01-16
Оригинал: «gddrescue: a tool for recovering data from damaged media», 12 декабря 2007 г.
Мне нужно было восстановить данные со сбойного винчестера, и я спросил в IRC, есть ли хорошие средства для Ubuntu. Кто-то назвал GNU ddrescue (в Debian и Ubuntu — пакет gddrescue), разработанный для восстановления данных из любого файла или блочного устройства.
Не путайте это с dd_rescue (соответствующий пакет — ddrescue), GNU ddrescue лучше.
На сайте GNU перечислены основные возможности программы:
- gddrescue копирует данные с одного файла или блочного устройства (винчестера, CD-ROM и так далее) в другой, пытаясь восстановить данные в случае ошибок чтения.
—
- gddrescue не затирает выходной файл, если это не запрошено, поэтому при каждом запуске для одного и того же выходного файла делаются попытки заполнить пробелы.
—
- gddrescue разрабатывался, чтобы работать в полностью автоматическом режиме.
—
- Если используется журнал работы, то данные восстанавливаются более эффективно — считываются лишь требуемые блоки. Кроме того, восстановление можно прервать в любой момент времени, а потом продолжить.
—
- Журнал периодически сохраняется на диск. Так что, если работа прервана, можно будет продолжить с минимальным повторным копированием.
—
- Если у вас есть две и более поврежденных копии файла или диска, то запуск ddrescue для всех копий и одного выходного файла скорее всего даст полную версию без ошибок. Вероятность того, что поврежденные области совпадают у разных входных файлов, очень мала. Если используется журнал, то из из второй и последующих копий будут считываться только требуемые блоки.
—
- Для восстановления различных участков одного файла можно использовать один и тот же журнал.
Алгоритм работы GNU ddrescue таков:
- Если нужно, считывается журнал, где описано состояние предыдущего прерванного сеанса работы, либо прежних попыток восстановления различных участков файла.
- До указанного места, либо до прерывания пользователем считываются неповрежденные участки входного файла.
- Делается попытка прочитать поврежденные участки. Поврежденные участки разбиваются на более маленькие, из них считываются уцелевшие фрагменты; и так пока не будет достигнут физический размер блока устройства, либо работу не прервет пользователь.
- Поврежденные блоки считываются в указанное число попыток, либо до прерывания работы.
- Если нужно для последующего вызова, записывается журнал работы.
Для использования требуется установить пакет gddrescue, но запускать нужно ddrescue. Эта путаница связана с тем, что соответствующее название пакета уже использовалось dd_rescue.
Синтаксис команды прост, и к программе прилагается хорошая документация man и info. Вот пример работы с компакт-диском (ошибок не найдено).
$ ddrescue -v /dev/cdrom Recovered.iso ddrescue.log
About to copy 101763 kBytes from /dev/cdrom to Recovered.iso
Starting positions: infile = 0 B, outfile = 0 B
Copy block size: 128 hard blocks
Hard block size: 512 bytes
Max_retries: 0 Split: yes Truncate: no
Press Ctrl-C to interrupt
Initial status (read from logfile)
rescued: 0 B, errsize: 0 B, errors: 0
Current status
rescued: 101763 kB, errsize: 0 B, current rate: 3801 kB/s
ipos: 101711 kB, errors: 0, average rate: 2702 kB/s
opos: 101711 kB
Полезные ссылки
Схожие проекты
Live CD с программами для восстановления данных
gddrescue есть в Debian, начиная с Etch, и в Ubuntu, начиная с Edgy. Проект разрабатывает Антонио Диаз Диаз с 2004 года.