为什么目录树在 ext4 文件系统上比 ext3 占用更少的空间?

为什么目录树在 ext4 文件系统上比 ext3 占用更少的空间?

我买了一个新的外部磁盘来替换出现问题迹象的旧磁盘。我过去常常rsync将旧磁盘的内容复制到新磁盘。为了检查复制是否正常工作,我做了一些事情,例如使用du和比较磁盘使用情况并完成差异。我注意到新磁盘上的磁盘空间使用量明显低于旧磁盘。例如,执行(是旧磁盘,是新磁盘)df时会显示以下内容:/backup/backup1

> du -s /backup/laptop
5400764 /backup/laptop
> du -s /backup1/laptop
5308428 /backup1/laptop

但如果我这样做,diff -r /backup/laptop /backup1/laptop 我什么也得不到。我看到的唯一可以解释差异的原因是旧磁盘使用ext3文件系统,而新磁盘使用文件系统ext4。如果有人能解释这一点,我将不胜感激。

谢谢,乔恩

答案1

我想到两种可能性。一种是 的rsync文件--sparse选项,可能包含零块的文件被写入为稀疏文件,这将占用较少的磁盘空间。

另一个(更可能的)潜在原因是,与许多 Unix 文件系统一样,ext3 和 ext4 在删除目录中的条目后不会压缩目录。例如:

% mkdir test
% cd test
% ls -aldg .
drwxr-xr-x 2 tytso 4096 May 26 15:25 ./
% seq 1 10000 | xargs touch
% ls -aldg .
drwxr-xr-x 2 tytso 159744 May 26 15:26 ./
% rm -f *
% ls -aldg .
drwxr-xr-x 2 tytso 159744 May 26 15:26 .

一旦将此目录复制到目标文件系统,它将再次占用 4k。

相关内容