我买了一个新的外部磁盘来替换出现问题迹象的旧磁盘。我过去常常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。