Восстановление данных со сбойного накопителя и копирование в образ

Материал из ALT Linux Wiki
Перейти к: навигация, поиск

ddrescue - инструмент для восстановления данных, копирующий данные из одного файла или блочного устройства (жесткий диск, CD-ROM и т. д.) в другой, пытаясь спасти данные в случае ошибок чтения.

Восстановление данных со сбойного накопителя[править]

Для наилучшего результата, лучше восстановить данные в образ в несколько проходов:

1.При первом проходе копируется как можно больше данных, без "проблемных" секторов:

ddrescue --no-split /dev/sda1 imagefile.img logfile.log

2.Теперь переходим к raw-диску. С помощью следующей команды утилита с повторными попытками (3) попробует восстановить информацию из "проблемных секторов", которые мы пропустили в прошлом шаге:

modprobe raw
raw /dev/raw/raw1 /dev/sda1
ddrescue --max-retries=3 --complete-only /dev/raw/raw1 imagefile.img logfile.log

3.Если это не удается, вы можете попробовать еще раз (все еще используя raw), повторно попытаться считать целые сектора:

ddrescue --retrim --max-retries=3 --complete-only /dev/raw/raw1 imagefile.img logfile.log

Теперь вы можете использовать ddrescue (или обычный dd) для копирования образа в новый раздел на новом диске. Используйте соответствующую утилиту для проверки файловой системы (fsck, CHKDSK), чтобы попытаться исправить ошибки, вызванные битыми блоками. Обязательно сохраните файл образа. На всякий случай, если файловая система сильно испорчена, то для оригинального образа необходимо использовать datacarving-утилиты, например, testdisk.

4.По окончании восстановления вы можете отключить raw-диск:

raw /dev/raw/raw1 0 0

Примеры использования[править]

Восстановление ext2-раздела[править]

с /dev/sda2 в /dev/sdb2[править]

Обратите внимание: следующая команда перезапишет все данные на разделе /dev/sdb2. Если вы не хотите этого делать, создайте образ восстанавливаемого раздела.

# ddrescue -r3 /dev/sda2 /dev/sdb2 logfile.log
# e2fsck -v -f /dev/sdb2
# mount -t ext2 -o ro /dev/sdb2 /mnt

Копирование диска в образ[править]

с /dev/sda2 в образ[править]

# ddrescue -r3 /dev/sda2 image.img logfile.log

Восстановление из образа[править]

из образа в /dev/sda1[править]

# ddrescue -f image.img /dev/sda1 logfile.log

Полное восстановление жесткого диска[править]

с /dev/sda на /dev/sdb[править]

1. Сначала скопируйте области с ошибками...

# ddrescue -n /dev/sda /dev/sdb rescue.log

2. ...а затем, попытайтесь восстановить поврежденные сектора

# ddrescue -r 1 /dev/sda /dev/sdb rescue.log

Монтирование образа[править]

Если вы не хотите восстанавливать файлы путем записывания содержимого образа на жесткий диск, то вы можете просто смонтировать img-образ.

# mkdir /mnt/disk
# mount -o loop image.img /mnt/disk

Параметры[править]

-h, --help
   отобразить справку
-V, --version
   отобразить информацию о версии
-b, --block-size=<bytes>
   hardware block size of input device [512] 
-B, --binary-prefixes
   show binary multipliers in numbers [default SI] 
-c, --cluster-size=<blocks>
   hardware blocks to copy at a time [128] 
-C, --complete-only
   do not read new data beyond logfile limits 
-d, --direct
   use direct disc access for input file 
-D, --synchronous
   use synchronous writes for output file 
-e, --max-errors=<n>
   maximum number of error areas allowed 
-F, --fill=<types>
   fill given type areas with infile data (?*/-+) 
-g, --generate-logfile
   generate approximate logfile from partial copy 
-i, --input-position=<pos>
   starting position in input file [0] 
-n, --no-split
   do not try to split or retry error areas 
-o, --output-position=<pos>
   starting position in output file [ipos] 
-q, --quiet
   quiet operation 
-r, --max-retries=<n>
   exit after given retries (-1=infinity) [0] 
-R, --retrim
   mark all error areas as non-trimmed 
-s, --max-size=<bytes>
   maximum size of data to be copied 
-S, --sparse
   use sparse writes for output file 
-t, --truncate
   truncate output file 
-v, --verbose
   verbose operation

За числами могут следовать значения: b = blocks, k = kB = 10^3 = 1000, Ki = KiB = 2^10 = 1024, M = 10^6, Mi = 2^20, G = 10^9, Gi = 2^30, etc...

Советы[править]

  • Считывать данные, желательно, указывая параметр --block-size=<bytes> (У старых дисков 512, у новых ("advanced format") 4096). Проверьте! Если блок будет меньше, то скорость чтения будет медленнее; если больше - возможна потеря данных.[1]

Источники: forensicswiki.org, Форум opennet.ru, superuser.com, habrahabr.ru