Rsync 文件列表缓慢 - 包括试运行

Rsync 文件列表缓慢 - 包括试运行

我已经通过 rsync (v3.0.6) 备份服务器一段时间了。我注意到仅获取增量文件列表就需要大约 20 分钟(我使用的是整个文件标志)。我排除了三个文件,如果将它们取出,只需一秒钟即可开始同步。只有 319 个文件(如果算上跳过的目录则为 689 个)。有什么想法或想法吗?模式匹配不应该这么慢吗?

rsync -vvnWr --exclude='aaa.tar.gz' --exclude='bbb.tar.gz' -exclude='ccc.tar.gz' --include='*.tar.gz' --exclude='*' --delete -e "ssh -p 34577 -i /root/.ssh/backup_rsa" [email protected]:/backup/cpbackup/daily/ /backup/jarvis/cpanel/$((($(date +\%-d)-1)/7+1))/*

样本输出

[sender] showing file ddd.tar.gz because of pattern *.tar.gz
[sender] showing file eee.tar.gz because of pattern *.tar.gz
[sender] hiding directory fff.0 because of pattern *
[sender] showing file ggg.tar.gz because of pattern *.tar.gz
...

输出与我们的不排除相同,显然它跳过了我列出的输出。由于排除,每一项之间都会有很长的停顿。我改变了IP和文件名。

谢谢!

答案1

我刚刚想通了,一定是需要睡觉了。我在排除中缺少一个连字符。它一定将其作为附加参数读取,而不会导致任何语法错误,而 -c 校验和标志可能是导致其速度变慢的原因。

感谢大家的阅读!

答案2

速度如此之慢的主要原因是您已经禁用了大部分rsync必须提供的优化。您几乎处于每次运行时复制所有包含的文件的阶段。

为什么?你是强制--whole-file而不是允许rsync产生差异。您也不会使用-t或复制时间戳-a,因此rsync必须读取本地和远程系统上的每个文件以确定校验和是否匹配。

试试这个

rsync --dry-run -vvtr \
    --exclude='aaa.tar.gz' --exclude='bbb.tar.gz' -exclude='ccc.tar.gz' --include='*.tar.gz' --exclude='*' \
    --delete --delete-during \
    -e "ssh -p 34577 -i /root/.ssh/backup_rsa" \
        [email protected]:/backup/cpbackup/daily/ \
        /backup/jarvis/cpanel/$((($(date +\%-d)-1)/7+1))/

相关内容