在 Ubuntu 18.04 上,我正在调查磁盘空间报告的差异。通过执行 adu -ks *
查看子目录上的空间,我缩小了差异范围,但是当再次执行相同的命令时,其中一个目录返回的大小是之前给出的数字的两倍。这很小(30M 而不是 15M),但它可能会影响我对 du 答案的信任。
所有这一切都在没有警告或错误的情况下发生。难不成du把数据搞错了,什么也没说?
干杯,休伯特
答案1
您很可能会看到硬链接的效果。
该du
实用程序只会计算并显示每个索引节点所占用的大小一次,即使该索引节点在一个或多个目录中具有多个关联名称。
例子:
$ tree
.
|-- dir-a
| `-- file1
`-- dir-b
`-- file1
2 directories, 2 files
$ ls -li dir-*/file1
25732 -rw-r--r-- 2 myself wheel 8757248 Dec 9 08:33 dir-a/file1
25732 -rw-r--r-- 2 myself wheel 8757248 Dec 9 08:33 dir-b/file1
文件dir-a/file1
和dir-b/file1
是同一文件的两个名称。请注意ls -li
(第一列)输出中的索引节点号。
$ du -h dir-*
8.4M dir-a
1.0K dir-b
$ du -h dir-b
8.4M dir-b
使用第一个命令时,目录的大小dir-b
仅为 1 KB,但运行第二个命令时显示目录大小为 8.4 MB。这是因为在第一个命令中, file1
in 中的文件已经被看到,因此它不包含在再次看到相同 inode 时dir-a
的大小计算中。dir-b