У меня есть образ диска Linux на 64 ГБ с ~ 50 ГБ неиспользуемого пространства между разделами. Файл небольшой, поэтому на диске он занимает всего ~ 14 ГБ.
Но если я dd
образ он записывает полные 64 ГБ, что занимает довольно много времени.
Есть ли способ сделать эквивалент dd if=os.img of=/dev/sdb
с этим образом без записи 50 ГБ нулей?
Есть ли какой-нибудь инструмент, достаточно умен, чтобы сделать это, например, инструмент создания образов, который знает файловую систему EXT4?
dd
может справиться с этим. Вам нужно добавить conv=sparse
в командную строку.
На странице руководства:
try to seek rather than write the output for NUL input blocks
Я бы подумал об использовании mksquashfs
для создания копии только для чтения вместо создания dd
всего объема. Это дополнительно сжимает и дедуплицирует данные.
Обратите внимание, что вы должны оценить - удобство использования зависит от вашего конкретного варианта использования.
Это неудобно, поскольку у вас есть полный образ диска, но вы можете:
os.img
и создать их на /dev/sdb
e2image -aro 1048576 os.img /dev/sdb1
Это не обрабатывает MBR, если она есть. /bin/dd if=os.img of=/dev/sdb bs=512 count=1
сделаю это.
Примечание: страница руководства e2image на linux.die.net устарела. Из бионической установки:
SYNOPSIS
e2image [ -r|Q ] [ -f ] device image-file
e2image -I device image-file
e2image -ra [ -cfnp ] [ -o src_offset ] [ -O dest_offset ] src_fs [ dest_fs ]