为什么两个CentOS盒子上同一目录使用的磁盘空间不同?

我想知道为什么当我使用rsnapshot将rsync / usr / lib /从一台机器定位到另一台时,'du'给出的输出是不同的? 机器是一样的,两者都是CentOS 5.3。

以下是源机器上的输出:

# du -csh /usr/lib/locale 129M /usr/lib/locale 129M total 

和目标机器(它已被rsynced):

 # du -csh usr/lib/locale/ 319M usr/lib/locale/ 319M total 

机器上的分区是相同的,都是/ var和两个相同的大小,大约409演出。

有一件事是可能的,那就是rsnapshot将源目录中的符号链接parsing成目标机器上的真实链接。 例如,在源机器上,查找与任何内容都不相关的文件:

 # find /usr/lib/locale -links 1 | wc -l 1733 

然后在目标机器上:

 # find usr/lib/locale/ -links 1 | wc -l 4597 

当你rsync,你使用--delete标志?

如果没有,那么当你进行同步时,你不会删除已经从远程机器上删除的文件,你只会同步存在的文件。

另外,请确保以相同的方式终止path,例如…

 rsync -a remote:/tmp/X ./tmp/X/ 

…不一样…

 rsync -a remote:/tmp/X/ ./tmp/X/ 

在添加--delete之前,确保你做了一个--dry-run这样你就可以看到发生什么。

此外,请记住使用-S( – 稀疏)标志,以便rsync将有效地处理小文件。 否则,rsync的目标将变得更大。

阅读rsync的手册页。 在那里你会find一个选项来检测和同步硬链接。 与-a一起使用。 如果该目录中的某些文件被硬链接,您将注意到空间大大减less。

尝试使用rsnapshot du。

目录的大小通常不会缩小(取决于文件系统),因此在一个系统上用来包含大量文件的目录(现在不会)会比不包含大量文件的目录大。

du应该有个选项来忽略目录的大小。

(注意:我的意思是目录本身,而不是文件)