文件(vdi)在分割然后进行cat操作后增加(双倍)大小

文件(vdi)在分割然后进行cat操作后增加(双倍)大小

我分割了一个 7 GB 的 vdi 文件,然后使用 cat 命令加入。该文件在 VBox 上正常工作,但重新加入后变为 14 GB。确切的操作是:

$ split -- bytes=2000M file.vdi /locationX/prefix

把它移到另一台机器上...

$ cat prefix* > /locationY/file.vdi

然后它的大小增加了一倍。

发生了什么?

答案1

file.vdi很可能是稀疏文件。这在虚拟机磁盘映像中非常常见:从未写入的部分将作为文件中不占用空间的漏洞保留。您可以通过检查原始文件的长度是否与其磁盘使用情况相匹配来确认:

ls -l file.vdi; du file.dvi

我预计ls -l会报告 14GB(实际文件长度),但du会报告 7GB(磁盘空间),这意味着大约一半的图像从未被写入。

稀疏文件是系统执行的一种原始压缩形式。文件中的漏洞被定义为包含一堆空字节,这就是应用程序从漏洞中读取时看到的内容。因此split(或cat或或cpddtar其他)读取大量空字节,这些字节占用了输出中的空间。

如果您想在目的地节省空间,您可以使文件再次稀疏。这只会节省空间,不会提高性能。

相关内容