baltun
Администратор
- Сообщения
- 12.294
- Реакции
- 3.082
- Баллы
- 1.833
Алгоритм работы GNU ddrescue таков:
Команда на создание образа и лога.
Если носитель сильно поврежден делаем в 2 проходы снятие образа.
Итог по завершению работы.
- Если нужно, считывается журнал, где описано состояние предыдущего прерванного сеанса работы, либо прежних попыток восстановления различных участков файла.
- До указанного места, либо до прерывания пользователем считываются неповрежденные участки входного файла.
- Делается попытка прочитать поврежденные участки. Поврежденные участки разбиваются на более маленькие, из них считываются уцелевшие фрагменты; и так пока не будет достигнут физический размер блока устройства, либо работу не прервет пользователь.
- Поврежденные блоки считываются в указанное число попыток, либо до прерывания работы.
- Если нужно для последующего вызова, записывается журнал работы.
Код:
yum install ddrescue
Команда на создание образа и лога.
Код:
ddrescue /dev/sde /media/Hard/backup/server.img /media/Hard/backup/server.img.log
Если носитель сильно поврежден делаем в 2 проходы снятие образа.
Код:
Первый проход
ddrescue --no-split --verbose /dev/sde /media/Hard500/backup/server.img /media/Hard500/backup/server.img.log
Второй проход
ddrescue --direct --max-retries=2 --verbose /dev/sde /media/Hard500/backup/server.img /media/Hard500/backup/server.img.log
В этом режиме очень сильно падает скорость, но восстанавливается то, что предыдущие два прохода не смогли
ddrescue --retrim --max-retries=2 --verbose /dev/sde /media/Hard500/backup/server.img /media/Hard500/backup/server.img.log
Итог по завершению работы.
Код:
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
-A или --try-again
Не углубляясь в нюансы работы ddrescure, можно пометить все ошибочные области, как области, которые еще не читались. Рекомендуется использовать опцию, если диск перестает отвечать.
-d или --idirect
При указании данной опции, ddrescure использует прямой доступ к диску, обходя кэши ядра.
-i bytes или --input-position=bytes
Ключ задает откуда (с какого bytes) начинать чтение с infile. По умолчанию установлен в ноль.
-m file или --domain-mapfile=file
Ограничить размер восстанавливаемого раздела последним блоком, обозначенным в логфайле. Используется для слияния образов восстановления. Например, если диск outfile сломался во время восстановления.
-n или --no-scrape
Пропускает т.н. фазу scrape. Уменьшает время восстановления, т.к. снижает время на попытки чтения самых трудных частей файла.
-r n или --retry-passes=n
Задает количество повторных попыток чтения поврежденных областей. По умолчанию - 0. -1 подразумевает, что количество попыток бесконечное. Каждый битый сектор читается один раз, пи этом перечитывается 0 раз по умолчанию, или то количество раз, которое заданно в текущей опции.
-R или --reverse
Обратная последовательность выполнения каждой фазы восстановления. То есть ddrescure читает данные в обратной последовательности.
-f или --force
Заставить ddrescure перезаписать диск outfile. Необходим, когда в качестве outfile используется устройство. Используется для защиты от ошибочного повреждения данных.
-v или --verbose
Verbose mode, он же подробный режим. Можно указать несколько -v (до 4х), что увеличит детальность вывода.
Не углубляясь в нюансы работы ddrescure, можно пометить все ошибочные области, как области, которые еще не читались. Рекомендуется использовать опцию, если диск перестает отвечать.
-d или --idirect
При указании данной опции, ddrescure использует прямой доступ к диску, обходя кэши ядра.
-i bytes или --input-position=bytes
Ключ задает откуда (с какого bytes) начинать чтение с infile. По умолчанию установлен в ноль.
-m file или --domain-mapfile=file
Ограничить размер восстанавливаемого раздела последним блоком, обозначенным в логфайле. Используется для слияния образов восстановления. Например, если диск outfile сломался во время восстановления.
-n или --no-scrape
Пропускает т.н. фазу scrape. Уменьшает время восстановления, т.к. снижает время на попытки чтения самых трудных частей файла.
-r n или --retry-passes=n
Задает количество повторных попыток чтения поврежденных областей. По умолчанию - 0. -1 подразумевает, что количество попыток бесконечное. Каждый битый сектор читается один раз, пи этом перечитывается 0 раз по умолчанию, или то количество раз, которое заданно в текущей опции.
-R или --reverse
Обратная последовательность выполнения каждой фазы восстановления. То есть ddrescure читает данные в обратной последовательности.
-f или --force
Заставить ddrescure перезаписать диск outfile. Необходим, когда в качестве outfile используется устройство. Используется для защиты от ошибочного повреждения данных.
-v или --verbose
Verbose mode, он же подробный режим. Можно указать несколько -v (до 4х), что увеличит детальность вывода.
Пример 1: Восстановление целого диска с несколькими разделами ext3 (или любыми другими, хоть NTFS) с /dev/hda на /dev/hdb.
Примечание: Нет необходимости создавать таблицу разделов на /dev/hdb, т.к. данные копируются побайтово вместе со структурой разделов.
Пример 2: Восстановление одного раздела с /dev/hda2 на /dev/hdb2.
Примечание: результирующий раздел должен существовать с тем же типом и размером, что и исходный, либо должен быть создан.
Пример 3:Во время восстановления целого диска /dev/hda на /dev/hdb, /dev/hda остановился и перестал отвечать на позиции 12345678.
Пример 4:Во время восстановления целого диска /dev/hda на /dev/hdb, /dev/hdb выдал ошибку и мы пытаемся восстановить данные на третий диск /dev/hdc
Пример 5:Во время восстановления целого диска /dev/hda на /dev/hdb, /dev/hda перестал отвечать, стал недоступен и невидим в /dev
Примечание: Нет необходимости создавать таблицу разделов на /dev/hdb, т.к. данные копируются побайтово вместе со структурой разделов.
Код:
ddrescue -f -n /dev/hda /dev/hdb mapfile
ddrescue -d -f -r3 /dev/hda /dev/hdb mapfile
fdisk /dev/hdb
e2fsck -v -f /dev/hdb1
e2fsck -v -f /dev/hdb2
Пример 2: Восстановление одного раздела с /dev/hda2 на /dev/hdb2.
Примечание: результирующий раздел должен существовать с тем же типом и размером, что и исходный, либо должен быть создан.
Код:
ddrescue -f -n /dev/hda2 /dev/hdb2 mapfile
ddrescue -d -f -r3 /dev/hda2 /dev/hdb2 mapfile
e2fsck -v -f /dev/hdb2
mount -t ext2 -o ro /dev/hdb2 /mnt
# (попробуйте прочитать данные с восстановленного раздела)
Пример 3:Во время восстановления целого диска /dev/hda на /dev/hdb, /dev/hda остановился и перестал отвечать на позиции 12345678.
Код:
ddrescue -f /dev/hda /dev/hdb mapfile
# ( <-- /dev/hda freezes here --> )
# (переподключите /dev/hda или перезагрузите компьютер )
# перезапускаем восстановление с байта 12350000
ddrescue -f -i 12350000 /dev/hda /dev/hdb mapfile
# Пробуем восстановить с конца диска
ddrescue -f -R /dev/hda /dev/hdb mapfile
Пример 4:Во время восстановления целого диска /dev/hda на /dev/hdb, /dev/hdb выдал ошибку и мы пытаемся восстановить данные на третий диск /dev/hdc
Код:
ddrescue -f -n /dev/hda /dev/hdb mapfile1
# (<-- /dev/hdb выдал ошибку -->)
ddrescue -f -m mapfile1 /dev/hdb /dev/hdc mapfile2
ddrescue -f -n /dev/hda /dev/hdc mapfile2
ddrescue -d -f -r3 /dev/hda /dev/hdc mapfile2
Пример 5:Во время восстановления целого диска /dev/hda на /dev/hdb, /dev/hda перестал отвечать, стал недоступен и невидим в /dev
Код:
ddrescue -f -n /dev/hda /dev/hdb mapfile
# (<-- /dev/hda fails here --> )
# Переподключите /dev/hda или перезагрузите компьютер столько раз, сколько необходимо
ddrescue -f -n -A /dev/hda /dev/hdb mapfile
ddrescue -d -f -r3 /dev/hda /dev/hdb mapfile
Последнее редактирование: