Как объединить ТОЛЬКО мап-файлы `ddrescue`? (только файл карты был опечатан)

401
MarkB

Моя система - Manjaro (Arch) Linux. У меня есть GNU ddrescuev1.23-1 (недавно установлен).

При возобновлении ddrescueя набрал опечатку. Теперь у меня есть одно изображение и два файла журнала.

В первый день я выручил начало диска. День 1 команда:

sudo ddrescue -vn /run/media/ab/2Nes1T/DDRnKB1 ~/kb1mapfile 

На второй день я спас некоторые данные ближе к концу моего диска. (Я хотел ускорить процесс, поэтому я использовал -Nи уменьшил -cдо 32KiB, и я хотел sdc2сначала восстановить приблизительную область моего раздела. Мой sdcдиск имеет поврежденную файловую систему, поэтому я не могу ddrescue sdc2конкретно, но я могу приблизить его местоположение и размер с помощью -i144000MiB -s50000MiB)

День 2 команда:

sudo ddrescue -vN -c 32KiB -i144000MiB -s50000MiB /dev/sdc /run/media/ab/2Nes1T/DDRnKB1 ~/kb1mapfileq 

В обеих командах я правильно ввел имя изображения как DDRnKB1, но в команде Дня 2 я случайно набрал файл карты как .~kb1mapfileq

Я попытался объединить с помощью этого метода:

ddrescue -m logfile2 image2 image1 logfile1 

Таким образом, моя команда слияния:

sudo ddrescue -m ~/kb1mapfileq /run/media/ab/2Nes1T/DDRnKB1 /run/media/ab/2Nes1T/DDRnKB1 ~/kb1mapfile 

но ddrescueвернулся:

ddrescue: Infile and outfile are the same. 

Я догадался, что смогу сделать копию своего изображения и сделать это:

sudo ddrescue -m ~/kb1mapfileq /run/media/ab/2Nes1T/DDRnKB1COPY /run/media/ab/2Nes1T/DDRnKB1 ~/kb1mapfile 

... но мои файлы изображений почти 500 ГБ, и я считаю, что нецелесообразно копировать 500 ГБ, чтобы соответствовать приведенной выше команде.

Есть ли способ объединить только файлы-карты (log-файлы)?

1
Примечание: «поврежденная файловая система» не имеет смысла в этом контексте; "поврежденная таблица разделов" делает. Kamil Maciorowski 5 лет назад 0

1 ответ на вопрос

0
Kamil Maciorowski

Используйте ddrescuelog --or-mapfile.

Ddrescuelog - это инструмент, который манипулирует картами ddrescue.

( источник )

-z file
--or-mapfile=file
Выполните операцию логического ИЛИ между законченными блоками в файле и в файле mapfile и запишите полученный файл map в стандартный вывод. Другими словами, в результирующем файле карты блок отображается как завершенный, если он был завершен в любом из двух входных файлов карты.

( источник )

Вызвать это:

# but see the warning below! ddrescuelog -z ~/kb1mapfileq ~/kb1mapfile > ~/kb1mapfile-merged 

Предупреждение: не перенаправляйте на ~/kb1mapfile(или ~/kb1mapfileq), иначе вы его потеряете .

Результат в ~/kb1mapfile-merged. После того, как вы подтвердите, что это правильно ( ddrescueviewэто правильный инструмент), перезапишите старый mapfile ( cp ~/kb1mapfile-merged ~/kb1mapfile).

Следуя вашему предложению, я использовал ddrescueview, чтобы увидеть полученное слияние, и оно выглядит правильно. Большое большое спасибо. Я так рад за ответ, и спасибо за ваше «предупреждение» тоже. MarkB 5 лет назад 0
@MarkB Хорошая идея с `ddrescueview`, браво! Я отредактировал это в своем ответе для будущих пользователей с подобными проблемами. Kamil Maciorowski 5 лет назад 0

Похожие вопросы