Как я могу объединить два изображения ddrescue?

Каждый раз, когда find ожидает число, можно поместить a + знак перед ним для значения больше, чем это число или a - подайте знак иметь в виду меньше, чем это число. Это строгие неравенства: +3 и -7 средства 4, 5 или 6.

С -size основной, необходимо добавить суффикс c указать, что число составляет многие байты. Можно связать несколько основных устройств для взятия их соединения (в некоторых версиях, можно поместить -a или -and между ними). Таким образом:

find . -size +385c -size -391c -delete

В zsh можно использовать L спецификатор шарика. Единица по умолчанию является байтами; как find, символы + и - укажите на строгие неравенства.

rm *(L+385-391)

(Команда выше не рекурсивно вызывает в подкаталоги; при необходимости в этом добавить **/ перед шаблоном.)

7
14.07.2013, 10:48
2 ответа

Если Вы знаете точно, какой регион данных Вы хотите скопировать, можно использовать dd:

dd conv=notrunc if=input of=output seek=123456 skip=123456 bs=4k count=128

Это скопировало бы 128 4k блоков с входа для вывода запуска в 123 456.

Было бы благоразумно скопировать блоки, которые Вы собираетесь перезаписать сначала:

dd if=output skip=123456 bs=4k count=128 of=output-backup-bs4k-pos123456

Если Вы НЕ знаете, какой регион данных скопировать или не уверены в этом, GNU dd оказывается, знает sparse.

dd conv=notrunc,sparse if=input of=output bs=4k

Это скопировало бы каждый ненулевой входной блок 4k для вывода. Использовать bs=512 если Ваши блоки меньше!

Обратите внимание, что нет резервного копирования с этим методом, таким образом, Вы лучше копируете файл, если это важно.

4
27.01.2020, 20:19

Попробовать что-то вроде этого?

dd if=part-one/ddrescue_image bs=1 count=227966006784 >result
dd if=part-two/ddrescue_image bs=1 seek=227966006785 >>result

Маленький размер блока сделает это очень медленным; если можно осуществить рефакторинг, чтобы использовать больший размер блока и все еще приземлиться при корректном смещении, которое должно сделать его намного быстрее.

Если Вы не можете сделать этого, разделив операцию на больше dd вызовы являются, вероятно, goid идеей - чтение с большим размером блока такой как 65 536 к ближайшей 64K границе, затем возьмите его медленный оттуда (возможно, понижение к 1K размеру блока к ближайшей 1K границе прежде, чем идти полностью в отдельные байты), затем пойдите быстрее снова, после того как Вы сделаны с мелкомодульным управлением.

1
27.01.2020, 20:19
  • 1
    С обновленной информацией о рассеянных регионах это все еще содержит как подтверждение концепции. Цикл через список смещений, переключаясь на второе изображение при смещениях, где это содержит данные, Вы хотите. –  tripleee 14.07.2013, 11:17

Теги

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