这取决于磁盘映像是完整磁盘映像还是仅仅是分区。
清洗隔板
如果磁盘处于良好的工作状态,则用零清洗磁盘上的空白空间将获得更好的压缩效果。如果磁盘出现故障,请跳过此步骤。
如果要映像整个磁盘,则需要清洗磁盘上的每个分区。
注意:请小心,您要将设置为已安装分区中of
的文件,而不是分区本身!
mkdir image_source
sudo mount /dev/sda1 image_source
dd if=/dev/zero of=image_source/wash.tmp bs=4M
rm image_source/wash.tmp
sudo umount image_source
制作分区图像
mkdir image
sudo dd if=/dev/sda1 of=image/sda1_backup.img bs=4M
其中sda
,设备的名称1
是分区号。如果要映像其他设备或分区,请针对您的系统进行相应调整。
制作整个磁盘映像
mkdir image
sudo dd if=/dev/sda of=image/sda_backup.img bs=4M
sda
设备的名称在哪里。如果要对其他设备进行映像,请针对您的系统进行相应调整。
压缩
制作一个“ squashfs”图像,其中包含完整的未压缩图像。
sudo apt-get install squashfs-tools
mksquashfs image squash.img
流压缩
为了避免使单独的临时文件成为磁盘的全部大小,可以将其流式传输为squashfs映像。
mkdir empty-dir
mksquashfs empty-dir squash.img -p 'sda_backup.img f 444 root root dd if=/dev/sda bs=4M'
挂载压缩分区映像
首先挂载squashfs映像,然后挂载存储在已挂载的squashfs映像中的分区映像。
mkdir squash_mount
sudo mount squash.img squash_mount
现在,您已经安装了压缩映像,请安装映像本身(即squashfs映像内部)
mkdir compressed_image
sudo mount squash_mount/sda1_backup.img compressed_image
现在,您的映像已安装在下compressed_image
。
编辑:如果您现在只想将磁盘映像还原到分区上(而不是将其挂载以浏览/读取内容),只需dd
将映像squash_mount/sda1_backup.img
放在目标位置即可,而不是这样做mount
。
挂载压缩的完整磁盘映像
这要求您使用一个名为kpartx的软件包。kpartx允许您将单个分区安装在完整的磁盘映像中。
sudo apt-get install kpartx
首先,挂载包含完整磁盘映像的压缩分区
mkdir compressed_image
sudo mount squash.img compressed_image
现在,您需要为整个磁盘映像中的每个分区创建设备:
sudo kpartx -a compressed_image/sda_backup.img
这将为整个磁盘映像中的分区创建设备,/dev/mapper/loopNpP
其中N是为回送设备分配的编号,P是分区编号。例如:/dev/mapper/loop0p1
。
现在,您可以在整个磁盘映像中挂载各个分区:
mkdir fulldisk_part1
sudo mount /dev/mapper/loop0p1 fulldisk_part1
SquashFS
这种东西。它还会删除重复文件的重复数据。