我目前正在使用 Ubuntu 20.04。
当我使用该命令检查文件的大小时du
,我得到以下输出:
ubuntu@ip-172-31-49-39:/myxfs$ du -h newquota
4.0K newquota
使用该ls -la
命令,我得到以下结果:
ubuntu@ip-172-31-49-39:/myxfs$ ls -la
total 8
drwxr-xr-x 2 ubuntu ubuntu 22 Apr 18 19:17 .
drwxr-xr-x 22 root root 4096 Apr 17 12:05 ..
-rw-r--r-- 1 ubuntu ubuntu 1024 Apr 18 19:17 newquota
为什么同一个文件,大小会有差别?文件的实际大小是多少?
答案1
对于文件来说,ls
显示文件的实际大小...同时du
显示文件在磁盘上保留/占用的空间...文件系统对某个文件的最小大小分配有所不同...大多数文件系统将保留最小块大小,在您的文件系统的情况下似乎如此4.0K
。
可以将其视为酒店房间的标准尺寸……酒店将以其标准客房尺寸容纳客人……同一房间也可能容纳两到三名客人……但在所有情况下,每位客人/客人组(无论一、二或三) 占用相同的最小可分配房间空间...酒店房间是文件系统块,客人是文件内容(比喻)。
因此,要么:
一个空块(空文件也只是元数据(例如名称和 inode...等),它们计入其父目录的大小,但尚未在磁盘上为它们保留实际大小)。
或被占用的区块(即内容小于或等于块大小的文件)
请看下面的演示:
# Show block size
$ stat -fc %s .
4096 # 4.0K
$ touch file
$ head -c 1k /dev/urandom > file
$ du -h file
4.0K file
$ ls -la file
-rw-rw-r-- 1 ubuntu ubuntu 1024 Apr 19 00:21 file