我一直觉得 rsync 至少应该和 scp 一样快。但这里我遇到了一个问题。当我使用 rsync -avr 从远程机器复制数据时,我得到的速度大约是 11 mb/s。如果我对同一个文件使用 scp,我得到的速度是 28 mb/s。
怎么会这样?这是一个包含许多文件的目录,但最大的文件只有一个 1 GB 的文件。我的意思是,连接出了问题,它应该是 1 GBit,而我只得到 ~300 mbit,但奇怪的是,rsync 在这里慢了很多……
有什么建议吗?谢谢。
答案1
scp
和之间的一个区别rsync
是,它rsync
会验证传输的文件,而scp
不会。
来自rsync
手册页:
请注意,rsync 始终通过检查文件传输时生成的整个文件校验和来验证每个传输的文件是否在接收端正确重建,但传输后的自动验证与此选项在传输前的“此文件是否需要更新?”检查无关。
因此,这可能是造成性能差异的一个原因。
答案2
..当传输大文件时,它的速度保持在 11 mb/s 左右。
在不知情的情况下,您可能在比较传输速率时造成了部分传输,从而使 CPU 成为瓶颈。
如果 Rsync 在接收方看到部分文件(测试遗留的?),则默认进行增量传输scp
。比较需要传输的内容的“滚动校验和”方法将影响发送方的 CPU 使用率。
我注意到,使用较弱的 CPU 作为发送方(Intel Atom 或较小的 VM 云实例)时,大型部分二进制文件的传输速率降低了 4 倍。在较大的机器上,在继续执行初始部分文件扫描后,传输速率保持不变。netcat
那么,吞吐量与普通文件之间的差异应该是通过 ssh 加密。
明确告知 rsync 不要使用部分传输 ( -W|--whole-file
) 将使传输速率再次回到同一水平。如果需要,--append
这是另一种恢复中断文件传输而不导致增量传输的方法。get -a
也sftp
可以恢复下载。
参见 Rsyncs架构描述以获得进一步的解释。
答案3
您忘记了硬盘速度。SATA 2 还是 SATA 3?SATA 2 的最大写入速度约为 300mb/s,SATA 3 的最大写入速度约为 600mb/s,因此可以说,您实际可以获得的速度是 35-150mb/s。只有 NVME 驱动器才能处理 1gbps 的网络速度,因此您可以获得 600-800mb/s。:-)
PS 使用 rsync -a --progress /home...Zip 进程正在杀死你的 CPU,这样传输将达到你 HDD 写入速度的最大值。