我尝试根据剩余硬盘空间创建一个空文件。问题是,当我创建一个 1 GB 大小的文件时,df 命令显示剩余空间仅比创建文件之前小 12 kb。
someone@here:/tmp/delete# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 36827144 5031592 29924788 15% /
tmpfs 508508 0 508508 0% /lib/init/rw
varrun 508508 156 508352 1% /var/run
varlock 508508 4 508504 1% /var/lock
udev 508508 140 508368 1% /dev
tmpfs 508508 1108 507400 1% /dev/shm
someone@here:/tmp/delete# dd if=/dev/zero of=tempFile bs=1000 count=1 seek=1000000
1+0 records in
1+0 records out
1000 bytes (1.0 kB) copied, 0.000438915 s, 2.3 MB/s
someone@here:/tmp/delete# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 36827144 5031604 29924776 15% /
tmpfs 508508 0 508508 0% /lib/init/rw
varrun 508508 156 508352 1% /var/run
varlock 508508 4 508504 1% /var/lock
udev 508508 140 508368 1% /dev
tmpfs 508508 1108 507400 1% /dev/shm
有人知道为什么 df 命令没有占满 1GB 吗?谢谢。
答案1
您在支持以下文件系统上创建它稀疏文件因此它实际上只占用 1000 个字节,正如 的输出所示dd
。省略seek
并使用适当的count
。
答案2
从info coreutils du
(重点是我的):
'--apparent-size'
打印表观大小,而不是磁盘使用情况。文件的表观大小是常规文件上“wc -c”报告的字节数,或者更一般地说是“ls -l --block-size=1”或“stat --format=%s”。例如,包含单词“zoo”且没有换行符的文件当然会具有 3 的表观大小。如此小的文件可能需要 0 到 16 KiB 或更多的磁盘空间,具体取决于文件所在的文件系统的类型和配置。但是,疏使用创建的文件 此命令:dd bs=1 seek=2GiB if=/dev/null of=big
有一个表观大小为 2 GiB然而在大多数现代系统中,它实际上几乎不占用任何磁盘空间。