两个ext4挂载,完全rsynced,相同的总文件数量,但不同的总字节大小。 为什么?

问题

我们在两个磁盘上有两个挂载点,两个都是完全相同的types。 两个磁盘的格式都是ext4

执行带有从源同步到目标的选项的rsync命令。

执行rsync之后,将显示以下数据:

磁盘1 – 来源

315.8 GiB (339,148,905,125) - 476,038 files, 21,975 sub-folders.

磁盘2 – 目的地

315.8 GiB (339,098,108,411) - 476,038 files, 21,975 sub-folders.

区别

50,796,714字节( 50,796,714 Mb)

使用命令

rsync -r -t -p -o -g -v --progress --delete --ignore-existing -s /media/user/disk1 /media/user/disk2


为什么总的字节大小不同?


更新

build议的答案是企图。 源和目的地之间的字节大小在大小均衡方面没有改善。

build议的回答命令包括-a-l开关,添加存档和符号链接传输:

rsync -a -r -t -p -o -g -v -l --progress --delete --ignore-existing -s /media/user/disk1 /media/user/disk2

(结果)

磁盘1 – 来源

315.8 GiB (339,148,905,125) - 476,038 files, 21,975 sub-folders.

磁盘2 – 目的地

315.8 GiB (339,098,108,411) - 476,038 files, 21,975 sub-folders.

区别

50,796,714字节( 50,796,714 Mb)


状态

问题没有解决。


进一步的研究

超级用户发现类似的问题:

https://superuser.com/questions/442539/why-do-two-directory-hierarchies-that-are-in-sync-have-different-sizes

从ServerFault:

Rsync大小从源到目的地不同


更新2

要求提供dudf产出,结果是:

root@system:/# du -s /media/user/disk1

332172440 /media/user/disk1

root@system:/# du -s /media/user/disk2/

332119568 /media/user/disk2/

root@system:/# df /media/user/disk1

Filesystem 1K-blocks Used Available Use% Mounted on

/dev/sdc 528316088 332243868 169212316 67% /media/user/disk1

root@system:/# df /media/user/disk2/

Filesystem 1K-blocks Used Available Use% Mounted on

/dev/sdb 528316088 332190996 169265164 67% /media/user/disk2

因此disk1和disk2之间仍然有52,872的差异。

出于很多原因。 例如,您不使用-a-l ,因此符号链接将转换为普通文件。 你不使用-H这样硬链接成为正常的文件。

而且在Unix / Linux上也有一个现象,就是一个被删除的文件仍然会消耗这个空间,直到所有打开的进程决定closures它为止。 在rsync之前可能在目的地打开文件?

最后,可能是Source的sparse files没有正确处理的问题,但是由于rsync通常很好地处理它们,所以不太可能。

PS rsync FAQ提供了一些其他的可能性( 来源 ):

  1. 如果你的目标比你的来源稍小,那么目录大小可能是不同的。 这仅仅是由于目录如何分配磁盘空间,并不能真正帮助。 我已经devise了一个快速的shell命令来将当前目录中的所有文件大小相加,而不包括目录大小:
 echo `find . -type f -ls | awk '{print $7 "+"}'`0 | bc 
  1. 在文件系统types,块大小,文件松弛开销等方面也有差异,这可能导致结果不同。
 tune2fs -l /dev/your_block_device | grep -i 'block size' 
  1. 如果您已经检查了所有这些,并且仍然受到无法解释的尺寸差异的困扰,那么我想指出,简单的尺寸对于数据复制操作的完整性或准确性没有太大的帮助。 它根本不检查文件的内容,它受上面解释的变化的影响。 我会build议使用一个实际的文件validation实用程序,如cfv来validation您的文件使用真正的密码哈希。 cfv实用程序与简单的md5sum实用程序非常相似,只不过它是recursion的,速度更快,并且具有%完成栏。