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

Материал из ALT Linux Wiki

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

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

Восстановление 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