Использование dd с conv=sparse для создания образов разделов или полных дисков?

Использование dd с conv=sparse для создания образов разделов или полных дисков?

По какой-то причине не так уж много вопросов и ответов об использовании dd для создания «меньших» файлов изображений с помощьюconv=разреженныйвариант здесь.

Итак, при использовании dd для создания образа, могу ли я безопасно использовать egdd если=/dev/sda из=/media/накопитель/sda.img conv=разреженныйполучить файл изображения, который занимает (гораздо) меньше места на целевом устройстве?

Не знаю, имеет ли это значение, но в этом случае источником будет SSD с файловой системой EXT4, используемый всего на 15% (так как он довольно новый), а целью также будет использоваться файловая система EXT4.

Или это, возможно, довольно плохая идея (при определенных обстоятельствах) и может привести к проблемам (позже, например, когда мне понадобится его восстановить)?

Мне также интересно, будет ли это работать, если целью является сетевое монтирование или файловая система?

Целью будет получение файла образа раздела или (что еще лучше) целого диска, который не займет больше места, чем необходимо, но при этом его будет легко монтировать и использовать.

Дополнительное сжатие на самом деле не нужно и не желательно, и, как я полагаю, оно обычно делает полученное изображение не поддающимся монтированию, так что я могу обойтись без него.

И я знаю, что Clonezilla может делать такие вещи, как сохранение только используемых секторов, но мне не нравятся его ограничения, напримерИз-за ограничений формата изображения, изображение не может быть просмотрено или смонтировано.. (И, конечно же, dd уже доступен в каждой системе.)

Спасибо заранее

решение1

Самый простой способ, который я нашел, чтобы сделать это, — это обрезать все разделы на диске с помощью соответствующего инструмента (fstrim в Linux, как бы инструмент ни назывался в Windows), затем сбросить таблицу разделов gpt в файл, используя gdiskи ddкаждый раздел через компрессор (я обычно использую zstd для скорости) и сохранить выходные сжатые образы вместе с дампом таблицы разделов. Вы сожмете каждый образ раздела немного меньше размера используемого пространства, и позже будет просто перенести образы обратно на пустой диск. Я делаю это с каждым новым ноутбуком, чтобы снять чистый заводской образ, прежде чем я разнесу диск и установлю Linux, если мне нужно будет отправить машину на гарантийный ремонт или решу продать ее, восстановить ее до заводского состояния будет просто.

решение2

Не могу ответить, conv=sparseразумно/безопасно ли это использовать, но вы получите разреженный результат, используя его ddвместе со сжатием (я использую zstd) и если вы «подготовите» исходный диск.

Я сделал образ SSD-накопителя емкостью 256 ГБ с установленной Win 11.

В Windows я обрезал разделы NTFS, записал все свободное пространство нулями, а затем выполнил обрезку еще раз:

Обрезка:defrag C: /L

Ноль свободного места внутри Windows: sdelete -z C:(из sysinternals)

Я сделал образ из Linux с помощью ddи ztd:

dd bs=1024K if="/dev/nvme0n1" | pv --size 256060514304 | zstd --quiet --force -o "/mnt/data/image.img.zst"

Изображение было записано и сжато примерно с150-350МБ/с.

После этого при запуске на пустое место исходного диска данные обрабатывались на1.2ГБ:-) А файл изображения увеличивался всего на 100 КБ из оставшихся 220 ГБ свободного места.

Я бы сказал, что это так же хорошо, как и "настоящая" разреженность. Размер файла изображения был19.3ГБРазмер установки W11 составил 48 ГБ (если удалить файл подкачки при установке Windows, можно сэкономить несколько дополнительных МБ/ГБ).

Чтобы восстановить изображение:

zstd --quiet --stdout --decompress "/mnt/disk1/image.img.zst" | pv | dd bs=1024K of="/dev/nvme0n1"

Дополнительная информация:
Чтобы обнулить смонтированный раздел в Linux cat /dev/zero | pv > /mnt/dis1/zero.dat.
И еще один пример: W10 LTSC, размер установки (C:) 18,2 ГБ (без файла подкачки):
Размер образа с dd: 6,26 ГБ
Размер образа с dism: 6,28 ГБ

Связанный контент