Я начал восстанавливать мой /dev/sdq1
когда я не был знаком с восстановлением жесткого диска. Ну, я был достаточно осторожен и выздоровел на 85% за 500 пробежек.
После этого я обнаружил, что мне нужно содержимое /dev/sdq
(без 1), чтобы преобразовать его после .vhd
с VBoxManage convertdd z:\fixed.vdi d:\disc.vhd --format VHD
и после того, как я смогу присоедините и прочитайте этот .vhd
в Windows, потому что VBoxManage
не поддерживает преобразование разделов и требует в качестве входных данных полный жесткий диск необработанных данных. Это означает, что я должен был запустить ddrescue с /dev/sdq
а не с /dev/sdq1
.
Я обнаружил, что содержимое /dev/sdq1
начинается с 32256 байт /dev/sdq
с fdisk. Я dd
эд эти байты в начале в отдельный файл begin.raw
и теперь работает cat ./rescue/begin.raw ./rescue/fixed.vdi > ./sdq.raw
предварять их восстановить данные из /dev/sdq1
Есть ли более простой способ продолжить ddrescue
для этого нового ./sdq.raw
со старым rescuelog? Я не уверен, что --output-position
здесь подойдет. (и как это работает точно? - Из документов не ясно, как output-position
повлияет на интерпретацию журнала спасения).
Я не хочу копировать 500 ГБ каждый раз, когда хочу получить ./sdq.raw
.
Ниже мой скрипт, который я использую для восстановления данных. Иногда мне приходилось физически отключать жесткий диск, потому что мой USB-концентратор не поддерживает полное отключение своих портов.
#!/bin/bash
function run {
ddrescue -T 5s --max-error-rate=10MB --skip-size=512KiB,10MiB \
--direct -vv -P /dev/sdq1 ./fixed.vdi ./rescue.log
}
while true; do
run &
JOBPID=$!
while true; do
dmesg | tail -1 | grep 'reset high-speed USB device number' > /dev/null
CODE=$?
if [ $CODE -eq 0 ]; then
break
fi
kill -0 "$JOBPID" > /dev/null
CODE=$?
if [ $CODE -ne 0 ]; then
break
fi
sleep 3
done
./uhubctl -i -a 2 -p 1 -l 1
wait $JOBPID
echo "MSG: waiting for re-attach"
until dmesg | tail -1 | grep 'Attached SCSI disk'; do sleep 1; done
sleep 5
done
Спасибо!
PS У меня есть концентратор Logitech USB 2.0, но он не поддерживает полное отключение питания на портах с помощью uhubctl
. Может быть, есть другой инструмент, который может работать с ним?