Восстановление данных со сбойного накопителя и копирование в образ
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