Rsync 再次复制所有内容,而不是增量

Rsync 再次复制所有内容,而不是增量

我正在尝试使用 rsync 在一台计算机中同步两个已安装的卷(1TB)。也许这可能不是最好的方法,但我试图找出可能出了什么问题,因为每次启动时,rsync 都会再次复制所有内容,而不仅仅是差异。

确切的命令是:

find . -type f|parallel -v -j 24 rsync -ar --progress /dbdata/{} /dbdata2/{}

因为我试图通过并行化过程来实现最大复制速度。

PS:之前由 find|mkdir 创建的目录/文件夹

Debian 杰西

我还应该为你提供什么?有任何想法吗?

答案1

默认情况下,rsync 不会对本地副本进行增量计算,仅通过网络进行增量计算。您可以添加-no-W--no-whole-file覆盖它。 --stats将显示有关所发生事件的更多信息。设置固定--block-size=值允许您选择应考虑的块大小。

答案2

并行化并不是让事情变得更快的灵丹妙药。并行化需要独立的,或者至少是松散耦合的任务。仅当任务不(过多)争夺资源时,并行化才有帮助。

由于 rsync 受 I/O 限制,而不是 CPU 限制,因此并行运行多个实例并没有太多好处。如果复制过程受到带宽的限制,那么并行化就没有办法获得任何东西,你只能因为并行化的开销而损失。 (并行化总是有开销,因为系统在任务之间切换。只有当收益抵消成本时,它才值得。)

如果由于延迟而无法使可用带宽饱和,即如果 rsync 花费很大一部分时间等待读取完成,则可以从并行化中获得优势。然而,延迟太高以至于您无法从 24 个并行实例中获得一些好处的可能性极小。对于大多数磁盘硬件,并行访问的成本很高,因为殴打。如果您拥有能够并行化请求的硬件,那么可能会有一些好处,但我怀疑任何硬件都可以处理 24 个并行请求。尝试使用两个实例,但要衡量,不要推测。

对于增量副本,只有当瓶颈是源和目标之间的带宽时,这才是一种优化。当存在可以非常快地计算校验和的本地 rsync、可以非常快地计算校验和的远程 rsync、以及中间的网络传输数据所花费的时间比 rsync 计算校验和所花费的时间多得多时,增量副本就有意义。对于本地文件,rsync 需要读取源和目标来计算校验和。如果写入速度与读取速度大致相同,则增量副本只会造成损害,因为读取最多只能阻止等量的写入。如果写入速度明显慢于读取速度,则增量副本可能会有所帮助,但这有些不寻常。您可以传递--no-whole-file强制增量传输,但如果这会使复制速度变慢,请不要感到惊讶。再次强调一下,不要猜测。

相关内容