end*_*ith 14 linux compression mount filesystems
我在 EXT 分区上有一堆用 ddrescue 制作的磁盘映像,我想在不丢失数据的情况下减小它们的大小,同时仍然可以安装。
如何用零填充图像文件系统中的空白空间,然后将文件转换为稀疏文件,这样这个空白空间实际上并不存储在磁盘上?
例如:
> du -s --si --apparent-size Jimage.image
120G Jimage.image
> du -s --si Jimage.image
121G Jimage.image
Run Code Online (Sandbox Code Playgroud)
不过,这实际上只有 50G 的真实数据,所以第二次测量应该小得多。
这应该会用零填充空白空间:
cat /dev/zero > zero.file
rm zero.file
Run Code Online (Sandbox Code Playgroud)
但是如果稀疏文件被透明处理,它实际上可能会创建一个稀疏文件而不向虚拟磁盘写入任何内容,具有讽刺意味的是阻止我将虚拟磁盘映像本身转换为稀疏文件。:) 可以?
注意:出于某种原因,sudo dd if=/dev/zero of=./zero.file
当cat
不在已安装的磁盘映像上时有效。
mih*_*ihi 19
首先,稀疏文件只有在您查找时才会透明处理,如果您写零则不会。
为了更清楚,维基百科的例子
dd if=/dev/zero of=sparse-file bs=1k count=0 seek=5120
Run Code Online (Sandbox Code Playgroud)
并没有写任何零,它会打开输出文件,寻求(跳过)5MB,然后写零零(即什么都没有)。这个命令(不是来自维基百科)
dd if=/dev/zero of=sparse-file bs=1k count=5120
Run Code Online (Sandbox Code Playgroud)
将写入 5MB 的零并且不会创建稀疏文件!
因此,已经是非稀疏的文件以后不会神奇地变得稀疏。
其次,要与许多零稀疏的文件,你必须CP它
cp --sparse=always original sparsefile
Run Code Online (Sandbox Code Playgroud)
或者您也可以使用tar或rsync的 --sparse 选项。
Onl*_*job 12
也许在适当位置稀疏文件的最简单方法是使用fallocate
实用程序,如下所示:
fallocate -v --dig-holes {file_name}
Run Code Online (Sandbox Code Playgroud)
fallocate(1)由Debian上的util-linux包提供。
归档时间: |
|
查看次数: |
19645 次 |
最近记录: |