Мне нужно восстановить мой USB HD на 1 ТБ. Я использую ddrescue
для этого. Есть ли способ, которым я могу возобновить работу ddrescue
после запуска?
Я использую команду:
ddrescue /dev/sdd1 ./bye1t.dd_rescue.image
решение1
ddrescueможно возобновить, но для этого требуется файл журнала. Файл журнала будет записывать прогресс, достигнутый ddrescue на данный момент, и перезапуск ddrescue прочитает файл журнала и начнет с того места, где остановился.
Третьим параметром будет файл журнала:
ddrescue /dev/sdd1 ./bye1t.dd_rescue.image ~/sdd1.log
Если вы уже запустили ddrescue без файла журнала и отменили его, то при следующем запуске ddrescue он начнется с самого начала, поскольку у него нет записи о том, что уже было восстановлено.
решение2
Даже если вы забыли указать файл журнала, надежда все равно есть:
Итак, вы не прочитали руководство и запустили ddrescue без файла журнала. Теперь, два дня спустя, ваш компьютер сломался, и вы не можете узнать, сколько данных удалось спасти ddrescue. И что еще хуже, вы не можете возобновить спасение; вам придется перезапустить его с самого начала.
Или, может быть, вы начали копировать диск с помощью dd conv=noerror,sync
и теперь находитесь в той же ситуации, что описана выше. В этом случае обратите внимание, что вы не можете использовать копию, сделанную dd, если она не была вызвана с sync
аргументом преобразования.
Не отчаивайтесь (пока). В некоторых случаях Ddrescue может сгенерировать приблизительный файл журнала из входного файла и (частичной) копии, который почти так же хорош, как точный файл журнала. Он делает это, просто предполагая, что сектора, содержащие все нули, не были спасены.
Однако, если местом назначения копии был диск или раздел (или существующий обычный файл, и усечение не было запрошено), скорее всего, вам придется перезапустить ddrescue с самого начала. (На этот раз с файлом журнала, конечно). Причина в том, что на диске могут присутствовать старые данные, которые еще не были перезаписаны, и, таким образом, могут быть неиспользованными, но ненулевыми.
Например, если вы впервые попробовали одну из этих команд:
ddrescue infile outfile
или
dd if=infile of=outfile conv=noerror,sync
Вы можете сгенерировать приблизительный файл журнала с помощью этой команды:
ddrescue --generate-mode infile outfile logfile
решение3
Как уже говорили другие, вы всегда должны указывать файл журнала в качестве третьего параметра, что позволит продолжить. Поскольку вы этого не сделали, это вам здесь не поможет. Если вы примерно знаете, в какой точке дошел процесс, вы можете использовать параметры --input-position
и --output-position
, чтобы начать с этой точки (убедитесь, что оба параметра имеют одинаковое значение, иначе вывод будет поврежден).
решение4
Заhttps://wiki.archlinux.org/index.php/Клонирование_дискакажется, что с conv=noerror,sync
переключателем dd
действительно добавляются нулив концеблока, а не точно, где произошли ошибки чтения. Это противоречит информации в ответе Майлза Вольбе от 29-08-2013.
Например, если последовательность правильная 198123283
и в середине есть ошибка чтения, то будет записано 198283000
, а не 198000283
.
Таким образом, в случае, если действительно возникнут ошибки чтения, предлагаемый метод не будет точным — будут области, которые можно было бы прочитать, но которые в итоге будут заполнены нулями, но при этом будут считаться «спасенными».
Кстати, хорошей практикой будет начать такую попытку восстановления с заполнения целевого диска нулями (или хотя бы свободного места, что можно сделать, например, с помощью WinHex).