Во-первых, вы не можете сделать это при работающей системе, или, по крайней мере, вы не можете сделать это безопасно и ожидаете получить правильный, согласованный образ диска при работе с работающей системой. Это, вероятно, большой аргумент против подхода dd
, хотя трудно сказать без ссылки на конкретные рекомендации против него.
Учитывая это, есть несколько подходов, которые вы можете использовать здесь, но все они требуют двух вещей:
- Возможность загрузки с альтернативной ОС, запущенной с отдельного устройства хранения (не просто другого раздела, а другого диска). Для большинства из перечисленных ниже методов я бы предложил использовать для этого компакт-диск System Rescue .
- Где-то, где вы можете хранить весь образ диска. Если вы используете USB-накопитель Live, он может быть использован для этого хранилища, если он достаточно большой, но вам, вероятно, понадобится большой диск для его извлечения.
Когда у вас есть это, у вас есть несколько вариантов:
Partimage
Partimage - это программа резервного копирования дисков для Linux, которая может эффективно хранить образы дисков. Это делается путем копирования только используемых секторов и сжатия результирующего файла изображения. Он включен в большинство Live CD для восстановления системы и даже поддерживает сохранение и восстановление изображений по сети. Недостатком является то, что он должен поддерживать файловые системы, которые есть на диске, который вы резервируете, и, в частности, не включает поддержку ext4 или BTRFS. При условии, что это не ограничение, это то, что я бы предложил использовать. Я не буду вдаваться в подробности того, как его использовать, поскольку существует множество хороших учебников.
ddrescue
Использование dd
для такого типа вещей не является большой проблемой, если вы делаете это из живой системы, но оно по-прежнему имеет ограничения в том, что перезапуск частичной копии является болезненным, он терпит неудачу, если есть какие-либо неудачные чтения или пишет, и это не дает хорошую информацию о прогрессе. Вот где приходит GNU ddrescue . Он может делать некоторые вещи, похожие на dd
, но предоставляет множество функций, которые чрезвычайно полезны для копирования или клонирования дисков. Процесс его использования, по сути, такой же, как и для dd
, но синтаксис командной строки другой. У них есть хорошая документация, поэтому я не буду тратить здесь место на объяснение того, как ее использовать, за исключением того, что хочу прокомментировать, что вы почти всегда хотите использовать файл журнала, чтобы он мог возобновить частичную передачу. Как и Partimage, ddrescue
включен в большинство Live CD для восстановления системы.
QEMU-IMG
qemu-img
- это специальный инструмент, включенный в программное обеспечение виртуализации QEMU, которое используется для преобразования между форматами образов дисков, поддерживаемыми QEMU. QEMU поддерживает как необработанные образы дисков, так и образы VDI, поэтому вы можете использовать qemu-img
для создания образа VDI с обычного физического диска, что означает, что вы можете просто пропустить процесс восстановления образа внутри VirtualBox. Точная команда, которую вы хотите, выглядит примерно так:
qemu-img -O vdi /dev/sda /path/to/image.vdi
Где /dev/sda
- это тот диск, с которого вы копируете, а /path/to/image.vdi
- имя файла, предназначенного для образа диска. Этот подход имеет два недостатка, а именно, что он не может быть возобновлен, если прерван частично, и что qemu-img
не включен в большинство Live CD (не говоря уже о большинстве систем, ориентированных на восстановление системы).
Если вы намереваетесь запустить виртуальную машину в другой системе, отличной от той, с которой копируете диск, и можете установить сетевое соединение между двумя системами, у вас будет гораздо больше гибкости, и вы сможете полностью устранить необходимость во временном хранилище. В этом случае вам следует настроить виртуальную машину, отличную от копирования диска, и загрузить ее и исходную систему в среду Live CD. Затем вы можете использовать либо NBD, либо iSCSI между двумя системами, чтобы напрямую скопировать диск по сети, используя dd
или ddrescue
.