Bel*_*dez 4 linux filesystems du
我们有两个目录:
$ ls -l
total 8
drwxr-x--- 2 nimmy nimmy 4096 Nov 15 19:42 jeter
drwxr-x--- 2 nimmy nimmy 4096 Nov 15 19:42 mariano
Run Code Online (Sandbox Code Playgroud)
我在第一个文件夹中创建一个文件:
$ dd if=/dev/zero of=jeter/zero_file.1 bs=512000 count=1
1+0 records in
1+0 records out
512000 bytes (512 kB) copied, 0.268523 s, 1.9 MB/s
Run Code Online (Sandbox Code Playgroud)
这是输出du:
$ du -sh *
504K jeter
4.0K mariano
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,如果我zero_file.在另一个文件夹中放置一个硬链接,du输出不会改变:
$ ln jeter/zero_file.1 mariano/zero_file.2
$ du -sh *
504K jeter
4.0K mariano
Run Code Online (Sandbox Code Playgroud)
但是,据我所知,文件系统中没有任何内容指向zero_file.1原始文件。那么如何du知道数zero_file.1而不数zero_file.2呢?
它不能是时间戳比较,因为所有硬链接共享一个 inode;他们会有相同的时间戳数据吗?
rog*_*sys 10
将您的测试扩展到三个文件夹,您可以看到只有第一次命中 inode 时才du会计数。如果您进入单个文件夹并运行du,您将获得完整大小。
去测试:
mkdir alexandru
ln mariano/zero_file.2 alexandru/zero_file.0
du -sh *
Run Code Online (Sandbox Code Playgroud)
您现在应该看到alexandru占用了 500K+。所以不看du代码,我猜它存储了一个遍历 inode 的列表,并且不会重新访问已经看到的那些。
| 归档时间: |
|
| 查看次数: |
5211 次 |
| 最近记录: |