我使用 rsync 将文件夹从一台机器复制到另一台机器。该文件夹非常大,包含数千个子目录,总共有数百万个文件。传输后(中断了几次),我在每台机器上检查该文件夹。结果不一致:
源文件夹:430 Gb
目标文件夹:415 Gb
我再次尝试 rsyncing,但所有子目录都被跳过了。我还尝试在命令中添加 --checksum,但它仍然跳过了所有内容。这 15Gb 的差异可以解释吗?如果不能,有什么方法可以找到哪些文件不匹配?
更新 我使用的 rsync 命令是:
rsync user@source:folder target
答案1
有几个原因可能导致报告的尺寸存在差异,或者可能导致报告的尺寸存在差异。
报告的大小取决于您使用的命令以及具体测量的内容。此外,文件使用的空间可能取决于用于格式化驱动器的文件系统和格式化选项。Linux 文件系统还支持稀疏文件。这意味着文件中的空部分(例如二进制文件)并未物理存储在磁盘上。因此,磁盘上文件的物理大小(由 报告
du
)小于其逻辑文件大小(由du --apparent-size
或报告ls
)。另一个可能导致副本大小
rsync
不同的因素是硬链接的存在。默认情况下,硬链接(即指向磁盘上相同信息的不同文件)将被复制为单独的文件,因此占用两倍的空间。大小差异的另一个可能原因是您重复了备份。默认情况下,
rsync
将保留副本上可能已在源中删除的文件。必须添加选项--delete
以在目标上也删除这些文件。
后两个原因会导致目标文件夹大于源文件夹,因此这无法解释您当前的情况。
rsync
是一款非常可靠的工具,其文件比较算法非常强大。它根据文件的时间戳和字节大小(逻辑大小)来比较文件。因此,如果rsync
报告不需要传输其他文件,那么您可以相信它。