Эта проблема известна как слияние. У Вас есть исходный файл A и две измененных версии B и C, и Вы хотите сделать версию D, которая комбинирует обе модификации. Это только работает, если изменения независимы; иначе слияние является ручным процессом. Обработка слияний параллельных изменений в исходном коде является частой задачей в разработке программного обеспечения.
В простых случаях, патч, произведенный diff
будет уже работать, если исходный файл изменился. patch
утилита позволяет некоторый “пух”: если Вы сделаете разность от до B, и области, затронутые той разностью, идентичны (но возможно при различных смещениях в файле) в A и C, то патч будет применяться чисто на C. Это работает хорошо пока измененные области в B, и C не в тех же местоположениях (должно быть разделение нескольких строк).
Когда патчи не применяются чисто, слияние является трудной и проблемно-ориентированной проблемой. Например, рассмотрите эти два изменения:
A B C
a=2 a=3 b=2
x=a x=a x=b
Люди склонны определять шаблон, который изменил B 2
кому: 3
и C переименовал a
кому: b
, таким образом, результат слияния должен быть b=3
, x=b
. Но автоматизированные инструменты, вероятно, отметят первую строку как конфликт, потому что она была изменена двумя различными способами.
Запись патча, который “делает что-то разумное” и к B и к C, является трудной (полной AI) проблемой. В практических случаях, для многих типичных ситуаций, с помощью diff -u A B
поскольку патч имеет тенденцию или работать и производить желаемый D из C или сбой с ошибкой при указывании, что патч не применяется чисто.
Тот же размер должен быть прекрасным, однако, я полагаю, что dd копирует сектор для сектора, поэтому когда исходный диск только одним сектором, более крупным, я думаю, что Вы столкнетесь с проблемами. Лучше просто получите больший жесткий диск. Можно использовать Gparted для увеличения исходного раздела для установки еще большему количеству файлов.
http://ubuntuforums.org/archive/index.php/t-1572839.html
ссылка выше дает еще некоторую информацию о dd, размерах диска и восстановлении данных из старого жесткого диска. Предложение использования clonezilla говорит больше всего со мной, так как clonezilla предназначен для копирования жесткого диска и имеет прекрасную работу ncurses интерфейс.
Удачи!
Для ddrescue
можно использовать диск на 250 ГБ или сделать файл на разделе того размера, если у Вас есть более крупный удобный диск. Никакая потребность сделать спасение от диска до диска, можно всегда монтировать образ дисков позже через интерфейс цикла.
dd
сбои для копирования последнего сектора? Диск так или иначе поврежден с различными поврежденными секторами, таким образом, я не ожидаю, что это будет единственным недостающим битом. – landroni 30.01.2014, 22:59