如何避免 rsync 与 ssh 之间的负载?

如何避免 rsync 与 ssh 之间的负载?

我在 Linux 服务器上有大量数据(300GB)。现在,我想通过 ssh 将其传输到另一台 Linux 服务器rsync。当我传输数据时,它会在服务器中产生巨大的负载。我可以知道如何避免在通过 ssh 传输大量数据时服务器负载过大吗?

答案1

使用较弱的 ssh 密码(例如 arcfour),如下所示:

rsync -av source --rsh="ssh -c arcfour" foo@bar:/destination

可能还有更弱的密码,但我更喜欢 arcfour,因为它不是安全性和速度之间最好的平衡(就我而言,搜索密码基准,有很多)。
或者根本不使用 ssh,并在目标服务器上运行 rsync 守护程序。

答案2

我找到了解决方案,通过在 rsync 中包含 ionice 和 nice 命令来避免在远程和本地服务器之间传输文件时服务器中的负载

ionice - get/set program io scheduling class and priority

nice - run a program with modified scheduling priority

#rsync -r -az --rsync-path="ionice -c 3 nice rsync" -e "ssh -p 8363" username@ip-address:/source-file  /destination

答案3

或者,如果你关心的是 CPU 负载,并且你拥有带有 AES 指令的现代 CPU(尽管从你的描述来看不太可能),那么你可以使用英特尔加速引擎。里面有README关于如何设置的信息。可能还有一些与发行版相关的设置方法。

要查看您是否拥有“现代” CPU,请使用grep aes /proc/cpuinfo

答案4

你可以通过以下方式进行补充Rsync --whole-file

默认情况下,Rsync 在本地副本上只会复制整个文件,但为了减少网络流量,远程同步会有所不同,这大大增加了 CPU 负载。

rsync -av --whole-file -e ssh {source} {destination}

来源

相关内容