Несколько дней назад я запустил ddrescue на своем разделе объемом 180 ГБ, но через 3 дня (и 99,91% восстановления и на этапе 3 при последней проверке) система зависла, поэтому я выключил компьютер, удерживая нажатой кнопку выключения.
При включении я сделал резервную копию файла образа и файла журнала, но файл журнала не скопировался полностью, выдало сообщение об ошибке копирования, но из 106 кб файла журнала скопировалось 104 кб (странная вещь).
И когда я снова запустил команду ddrescue, появилось сообщение «Ошибка в mapfile discoC.Logfile, строка 4092».
команда:
sudo ddrescue -d -r0 /dev/sdb3 discoC.img discoC.Logfile
Это моеНеполный файл журнала на PasteBin, строка 4092 — последняя. Это часть файла журнала:
# Mapfile. Created by GNU ddrescue version 1.23
# Command line: ddrescue -d -r0 /dev/sdb3 discoC.img discoC.Logfile
# Start time: 2021-12-15 01:56:33
# Current time: 2021-12-18 20:11:51
# Scraping failed blocks... (forwards)
# current_pos current_status current_pass
0xC5A65E00 / 1
# pos size status
0x00000000 0x00003400 -
0x00003400 0x00000200 +
0x00003600 0x00000800 -
0x00003E00 0x00000800 +
0x00004600 0x00000200 -
0x00004800 0x00000200 +
0x00004A00 0x00000400 -
....... (Lot of - and +)........
0xC564C600 0x00000400 +
0xC564CA00 0x00000600 -
0xC564D000 0x00000200 +
0xC564D200 0x00000200 -
0xC564D400 0x00000800 +
0xC564DC00 0x00000400 -
0xC564E000 0x00000600 +
0xC564E600 0x00000200 -
0xC564E800 0x00001A00 +
0xC5650200 0x00000200 -
0xC5650400 0x00000E00 +
0xC5651200 0x00000200 -
0xC
Можете ли вы мне помочь, чтобы процесс мог продолжиться?
решение1
В соответствии сhttps://www.electric-spoon.com/doc/gddrescue/html/Mapfile-structure.htmlФайл карты (лог-файл) довольно легко интерпретировать и редактировать с помощью текстового редактора.
Я бы предпочел сделать его копию и удалить строки 4091 и 4092, что, как я ожидаю, позволит ddrescue продолжить с последней зафиксированной точки.
Кажется, он ужасно много падает. Интересно, если запустить его с конца в обратном порядке (т. е. добавив переключатель -R), можно ли быстрее захватить часть данных. (Нет ничего плохого в попытке сделать это).
решение2
Извините, что прочитал вопрос так поздно.
Было бы легко восстановить что-то действительное для отсутствующей строки 4092:
0xC5651400 <remaining-size> ?
Где:
0xC5651400
— это начало нового блока блоков, полученное путем суммирования начальной позиции предыдущего блока в строке 40910xC5651200
и размера этого блока блоков0x00000200
.?
это означает, что блоки, начинающиеся с0xC5651400
, еще не были опробованы, и поэтому необходимо попытаться клонировать их.<remaining size>
: см. ниже.
Как рассчитать значение для <remaining size>
:
- если в вашем лог-файле есть строка 4093: разница между начальным смещением в строке 4093 и вычисленным начальным смещением, указанным в строке 4092 (т.е.
0xC5651400
), в шестнадцатеричном формате - или, если строки 4093 нет: разница между размером вашего
dev/sdb3
раздела и начальным смещением в строке 4092 (т.е.0xC5651400
).
Размер раздела dev/sdb3
можно узнать с помощью команд терминала, например, fdisk -l
или запустив процесс клонирования в другой файл образа, а при отсутствии файла журнала — в другой файл журнала. ddrescue должен отобразить сообщение типа «Собирается скопировать N байт». Возможно, вам придется разделить на размер сектора (например, 512) и преобразовать в шестнадцатеричное число.