rsync --整个文件解释

rsync --整个文件解释

当我rsync从硬盘驱动器运行到已安装的闪存驱动器时,速度非常慢。我正在考虑使用--whole-file开关。

你能解释一下为什么它更快吗?为什么我不应该害怕使用它?以及使用它的优点和缺点是什么。我还没有找到太多关于它的信息。

rsync命令:

rsync -avh --delete --no-o --no-g /home/xralf/audio /media/extdevice/rsync_backups/

rsync从硬盘驱动器(ext4 文件系统)到闪存驱动器(vfat 文件系统)。

答案1

让我们从在您的系统上找到--whole-file( )的文档开始,该文档首先解释了它的作用:-Wman rsync

此选项禁用 的rsync增量传输算法,这会导致所有传输的文件被完整发送。

然后接着说,

当源计算机和目标计算机之间的带宽高于磁盘带宽时(特别是当“磁盘”实际上是网络文件系统时),如果使用此选项,传输可能会更快。 […]

基本上有两种操作模式rsync

  1. 本地副本(包括源和目标都存在的网络文件系统)看起来像它们是本地文件系统的一部分)。在这种情况下rsync,根据文件大小和修改时间戳选择复制整个文件或跳过它。在这种情况下会启用该--whole-file选项,因此不会进行增量优化。事实上,几乎所有时候启用此功能都是没有意义的,因为您将花费更长的时间来读取源文件和目标文件来比较它们,而不是首先复制文件。

  2. 远程副本(其中一个路径包含{host}:{path}{host}::{path}样式构造)。在这种情况下,rsync可以在本地计算机上运行其自身的一个实例,在远程计算机上运行一个实例。这两个实例可以独立读取源文件和目标文件以进行比较,希望产生优化的情况,即只有更改通过网络传输。此处,--whole-file默认情况下不启用。

在场景 #1 中,该--whole-file选项默认启用,并且文件副本几乎总是比增量传输快。 (例外情况是如果您可以读取本地磁盘显著地比你写入它的速度还要快。)

这就是您正在使用的情况(本地到本地副本)。这里的大问题是您正在写入 VFAT 文件系统,该文件系统的文件时间戳只有两秒的粒度。这意味着许多文件rsync会认为它们已经过时并会重新复制它们 - 不必要的。

修复在这里是使用(有关详细信息,--modify-window=1请参阅文档)。man rsync我也读过如果你所在的时区在夏季和冬季之间变化,你应该rsync在 UTC 下运行命令以避免相关的时区复杂性,但我自己还没有测试过:

TZ=UTC rsync -rtvh --modify-window=1 --delete /home/xralf/audio /media/extdevice/rsync_backups/

在场景 #2 中,该--whole-file选项默认处于禁用状态,并且会导致增量文件传输,通常比不小心发送整个文件要快。例外情况是,当通过网络发送数据的速度快于计算源和目标之间的差异时;例如,10Gb/s 网络可能就是这种情况。

结论:一般来说,尝试欺骗rsync内置优化不会让事情变得更好,而且通常会使传输速度变得更糟。既不启用也不禁用--whole-file,而是让其自行rsync选择。不过,就 VFAT 文件系统而言,请尽量避免使用它们,但如果做不到,那么在这种情况下,您确实需要提供rsync一些额外的帮助。

相关内容