我对 qcow2 文件的实际大小有点困惑。
ls -alh VMs/ubuntu-mini.qcow2
-rw------- 1 root root 21G mar 31 23:15 VMs/ubuntu-mini.qcow2
du -h VMs/ubuntu-mini.qcow2
2,7G VMs/ubuntu-mini.qcow2
我想将该文件复制到不同的分区(ext4)。看起来这个命令实际上复制了21G而不仅仅是我预期的2,7G 。现在在新位置,这两个命令(du 和 ls)向我显示相同的大小 - 21G。
du -h /media/HDD0/VMs/ubuntu-mini.qcow2
21G /media/HDD0/VMs/ubuntu-mini.qcow2
ls -alh /media/HDD0/VMs/ubuntu-mini.qcow2
-rw------- 1 root root 21G mar 31 23:15 /media/HDD0/VMs/ubuntu-mini.qcow2
复制 qcow2 文件的正确方法是什么?“cp”命令中是否有开关使其仅复制2,7G?
该文件是稀疏的,这意味着它包含一个或多个“洞”。当从孔中读取数据时,会返回零,但这些零不会存储在磁盘上,而是由文件系统生成。
当存储大部分为零的大文件时,此功能可节省实际硬盘空间。该
ls
实用程序将报告文件的外观大小,但du
会显示文件的外观大小减去文件中的孔大小(即文件在磁盘上使用的空间量)。当您复制文件时,
cp
不会保留文件的备用性,并且零会填补漏洞。在 GNU 系统上,您可以在复制文件时使用
--sparse=auto
or--sparse=always
标志cp
来保持稀疏性,因为这些孔足够大。在某些 BSD 系统(至少是 OpenBSD)上,cp
默认情况下会尝试保留稀疏文件中的漏洞。您也可以使用
rsync
(--sparse
)-S
选项来复制文件。请注意,即使这些孔被零(全部或部分)填充,生成的文件在功能上与原始文件相同,但会使用更多的实际磁盘空间。
另请参阅:最初稀疏然后扩展的文件可以再次变得稀疏吗?