让从服务器到 PC 的 rsync 变得更快

让从服务器到 PC 的 rsync 变得更快

我正在尝试研究如何加快从 UNIX 服务器到 Windows 10 64 位 PC 的备份速度。我目前正在使用以下命令:

rsync -vcr --chmod=ugo=rwX --delete --whole-file -e "ssh -l chambres -i /cygdrive/F/ServerBackups/com_server_key" --exclude '*.compiled' --exclude 'GTTemp*' --exclude 'backup' --exclude 'Detailed' --exclude 'Gites/' --exclude 'Chambres_D_Hotes/' --exclude 'public_html/m/' "site.com:/home/user/public_html" "/cygdrive/F/ServerBackups/Account" > /cygdrive/F/ServerBackups/Account.log

它使用赛格威,但在Windows 10机器。该站点大约有 100gb,但我希望在实际抓取更改的文件时速度会比这更快。

这些--exclude东西是为了加快速度(因为那些只是静态页面,每晚都会构建,所以我并不真正关心那些)

目前它需要 7-8 个小时才能运行,并且大部分时间都使我的 CPU 达到最大负荷(我使用的是 8 核 Intel i7,3.24ghz... 所以并不是一台小型机器:))

我可以使用什么技巧来尝试加快速度吗?

答案1

不要使用该-c选项。它需要读取服务器和客户端上的所有文件来计算/比较校验和。

在大多数情况下,基于时间/大小的比较(如所用rsync -av)应该足够了。

引用man rsync

-c,--校验和

这会改变 rsync 检查文件是否已更改且需要传输的方式。如果没有此选项,rsync 将使用“快速检查”(默认情况下)检查发送方和接收方之间每个文件的大小和上次修改时间是否匹配。此选项会将其更改为比较每个大小匹配的文件的 128 位校验和。生成校验和意味着双方将花费大量磁盘 I/O 来读取传输文件中的所有数据(这先于传输已更改文件的任何读取),因此这会大大降低速度。

发送方在扫描文件系统以建立可用文件列表时生成校验和。接收方在扫描已更改文件时生成校验和,并将对与相应发送方文件大小相同的任何文件进行校验和:选择大小已更改或校验和已更改的文件进行传输。

请注意,rsync 始终通过检查文件传输时生成的整个文件校验和来验证每个传输的文件是否在接收端正确重建,但传输后的自动验证与此选项在传输前的“此文件是否需要更新?”检查无关。

相关内容