Восстановление данных со сбойного накопителя и копирование в образ
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 # e2fsck -v -f /dev/sdb2 # mount -t ext2 -o ro /dev/sdb2 /mnt
Копирование диска в образ
с /dev/sda2 в образ
# ddrescue -r3 /dev/sda2 image.img logfile
Восстановление из образа
из образа в /dev/sda1
# ddrescue -f image.img /dev/sda1 logfile
Полное восстановление жесткого диска
с /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