我在EXT分区上有一堆用ddrescue制作的磁盘映像,我想减小它们的大小而不丢失数据,同时仍然可以挂载。
我如何用零填充图像文件系统中的空白空间,然后将其转换为稀疏文件,从而使该空白空间实际上不存储在磁盘上?
例如:
> du -s --si --apparent-size Jimage.image
120G Jimage.image
> du -s --si Jimage.image
121G Jimage.image
但是,实际上它只有50G的真实数据,因此第二次测量应该小得多。
据说这将用零填充空白空间:
cat /dev/zero > zero.file
rm zero.file
但是,如果透明地处理稀疏文件,则它实际上可能会创建一个稀疏文件而不向虚拟磁盘写入任何内容,具有讽刺意味的是,这阻止了我将虚拟磁盘映像转换为稀疏文件本身。:) 可以?
注意:由于某些原因,sudo dd if=/dev/zero of=./zero.file
当cat
不在已安装的磁盘映像上时可以使用。
sudo cat /dev/zero > zero.file
这不起作用,因为您的bash(以您的身份运行,而不是root用户)在执行sudo
命令之前会进行重定向。参见unix.stackexchange.com/questions/1416/…–