如果目录中的数据相同,为什么两个目录的大小不同?它们是相同的 ext4 分区和磁盘

cb3*_*303 8 linux ext4

root@phoenix:~# ls -ld /backups/external?/var/subsonic/thumbs/110
drwxr-xr-x 2 root root 73728 Mar  4 15:35 /backups/external3/var/subsonic/thumbs/110
drwxr-xr-x 2 root root 69632 Mar  4 15:35 /backups/external4/var/subsonic/thumbs/110
Run Code Online (Sandbox Code Playgroud)

上述目录的内容是相同的。磁盘和文件系统配置是相同的。然而目录本身的大小是不同的。

是的,有问题的目录的内容是相同的,我已经检查过 diff -r、rsync -avx 以及无法比较的内容。这是 diff -r 输出:

root@phoenix:~# diff -r /backups/external{3,4}/var/subsonic/thumbs/110
root@phoenix:~# 
Run Code Online (Sandbox Code Playgroud)

du -bs 输出:

root@phoenix:~# du -bs /backups/external?/var/subsonic/thumbs/110
4116125 /backups/external3/var/subsonic/thumbs/110
4112029 /backups/external4/var/subsonic/thumbs/110
Run Code Online (Sandbox Code Playgroud)

du -b --total 输出计算每个目录中的文件

root@phoenix:~# du -b --total /backups/external3/var/subsonic/thumbs/110/* | tail -1 
4042397 total
root@phoenix:~# du -b --total /backups/external4/var/subsonic/thumbs/110/* | tail -1 
4042397 total
Run Code Online (Sandbox Code Playgroud)

因此,对于 external3:

4042397 + 73728 = 4116125
Run Code Online (Sandbox Code Playgroud)

对于 external4:

4042397 + 69632 = 4112029
Run Code Online (Sandbox Code Playgroud)

添加到目录本身大小的文件大小与 du -bs 的输出匹配。

jll*_*gre 8

ls -l目录报告的大小与存储在其中的文件的累积大小无关。

对于大多数常见的文件系统,它只是存储目录条目所需的大小(以字节为单位)。此大小随块大小而增长(例如:4096、8192、...)。一个块中可以存储多少条目取决于文件系统,并且还随条目文件名长度而变化。

当目录条目被删除时,目录大小不受影响以减少碎片。

在您的示例中,external3目录已18 * 4096分配块,而external4具有17 * 4096块。

这只是意味着前者存储了更多文件(或具有更长名称的文件),即使目录内容当前相同。没什么大不了。