我正在设法解决如何加速从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
它使用Cygwin运行 ,但在Windows 10机器上运行。 该网站大约100GB,但我希望这实际上抓住更改的文件会比这更快。
--exclude东西是为了加快速度(因为那些只是静态页面,每天晚上build成,所以我不关心这些)
目前运行需要7-8个小时,而且CPU占用时间很长(我在8核英特尔i7上,3.24GHz ……所以不是一个小机器:))
我可以使用什么技巧来尝试加速吗?
不要使用-c选项。 它需要读取服务器和客户端上的所有文件来计算/比较校验和。
在大多数情况下,基于时间/大小的比较(由rsync -av )应该足够了。
引用man rsync :
-c,–checksum
这改变了rsync检查文件是否已经被更改并且需要传输的方式。 如果没有这个选项,rsync使用“快速检查”(默认情况下)检查每个文件的大小和最后一次修改的时间是否匹配发送者和接收者。 此选项将更改此设置,以比较具有匹配大小的每个文件的128位校验和。 生成校验和意味着双方将花费大量磁盘I / O读取传输文件中的所有数据(并且这是在传输已更改文件的任何读取之前),所以这可能会降低速度显著。
发送方在进行文件系统扫描时生成校验和,以生成可用文件的列表。 接收方在扫描已更改的文件时生成校验和,并将校验和与相应的发送方文件大小相同的任何文件:select要更改大小或更改校验和的文件进行传送。
请注意,rsync通过检查在传输文件时生成的整个文件校验和来validation每个传输的文件是否在接收端被正确重build,但是自动传输后validation与此选项无关在传输之前“这个文件是否需要更新?” 检查。