加快/避免计算rsync文件列表


12

我使用rsync 3.1.1来同步两张光盘,其中一张在网络上,并作为samba共享安装在上/mnt/ROUTER_WD_2TB/。这是源,由于网络限制,速度最高为30-40MB / s。另一个是目的地,安装在本地(峰值110MB / s),并且是/mnt/BACKUP_HITACHI_2TB/

我使用以下rsync命令:

rsync  -haAXi --quiet --append-verify --delete /mnt/ROUTER_WD_2TB/* /mnt/BACKUP_HITACHI_2TB/.

磁盘包含许多文件,其中大多数很小。

问题是,rsync 开始移动任何文件之前需要花费相当长的时间(10-20m),我想是因为它必须计算大量小文件的文件列表。在此期间,网络利用率为200-500KB / s,而传输文件时的速度约为40MB / s。

通常,rsync大约需要15m才能找到它必须复制的内容,然后花费5秒钟来复制它,然后再继续检查其他一些文件再复制5分钟。总而言之,一个5秒钟的文件副本将持续20分钟!

除了排除文件夹之外,在复制文件之前,我是否可以采取任何其他措施来避免这一长时间?我可以实现哪种“缓存”,以便rsync不必从头开始重建所有文件列表?


1
您是否尝试过此线程的解决方案?unix.stackexchange.com/questions/189878/...
UVV

@UVV我还没有这样做。我可能会这样做,但是1)出于某种原因,rsync在我的情况下似乎并未使用完整内核(=我不确定我是否受CPU限制或限制是否在其他地方)和2)这仅仅是在双核CPU上,因此即使改进了2倍,也仍有很大的改进余地。
AF7

是的,这对我来说似乎很疯狂,为什么rsync这么慢?即使使用“ --size-only”,rsync似乎也要花很长时间才能建立其增量文件列表。为什么?我可以手动检查文件大小,并确定哪些文件更改速度更快!这么多的时间在浪费什么?如何关闭这些功能?编辑:啊,没关系,我偶然设置了'c'标志。如果没有校验和,这将非常快。
Ben Farmer

Answers:


5

rsync您而言,您要在两个本地文件树之间进行复制,因此它将禁用其大部分优化(包括其著名的增量算法)。如果您可以rsync在远程服务器上运行Windows服务器(这样您就可以在整个网络上获得真正的客户端-服务器方案),那么您将获得极大的吸引力。

不过,这里还有其他可供考虑的选择

  1. 复制而不必担心删除旧文件。这可能使您可以更频繁地执行更快的传输,并放慢速度,例如每天一次:

    cp -au /mnt/ROUTER_WD_2TB/. /mnt/BACKUP_HITACHI_2TB/
    
  2. 使用rsync的默认删除算法的变体来避免在传输之前建立完整的文件列表:

    rsync -haAXi --quiet --delete --delete-during /mnt/ROUTER_WD_2TB/ /mnt/BACKUP_HITACHI_2TB/
    
  3. 将顶级目录拆分为单独的任务,然后并行运行它们。您可能会发现,如果磁盘受到IO的限制,那么这将无济于事,而且对于旋转磁盘而言,几乎肯定会使情况变得更糟。

    for d in /mnt/ROUTER_WD_2TB/*
    do
        rsync -haAXi --quiet --delete --delete-during "$d" /mnt/BACKUP_HITACHI_2TB/ >"/tmp/rsync.${d/*\/}.log" 2>&1 &
    done
    wait
    cat /tmp/rsync.*.log
    rm -f /tmp/rsync.*.log
    

如果没有这些建议有助于那么这将是值得加入另一个--verbosersync看到它在做什么。我怀疑它会遍历所有未更改的文件,如果您有足够的文件,这将花费很长时间。


--delete --delete-during没有为我做这件事-仍然发送了一个增量文件列表-但--delete --delete-before直接转到了:building file list,这似乎是一项重大进展。我认为。
mlissner '18

不,那是倒退,恐怕。如果使用--delete-before,则rsync对文件树执行两次遍历:一次遍历删除,另一遍进行复制。
roaima

谢谢。在那种情况下...避免构建增量文件列表的任何方法?
mlissner '18

@mlissner它取决于几个不同的因素。迄今为止最大的问题是您要进行本地到本地还是本地到远程复制。
roaima '18

对我来说,这都是本地的,尽管其中一个是USB磁盘?
mlissner '18

-2

您可以-vv用来查看的完整日志rsync


2
这将如何回答问题,即如何加快处理速度?
库萨兰达

您可能只看到日志,它显示了为什么启动rsync花费了这么多时间,也许有些文件可以从rsync跳过以减少时间。
namaiiee
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.