如何让 scp 运行得更快?

如何让 scp 运行得更快?

我使用以下命令在我的家庭网络中传输文件(当我需要传输大量文件时,我通常使用该tar实用程序将它们存档):

scp -c blowfish [FILE] [USER]@[ADDRESS]:[PATH]

将 500 Mb 的数据发送到另一台计算机大约需要 25 分钟。平均速度约为 600 KB/s。我认为绝对有办法加快这个过程,因为我不相信我能在不到 10 分钟的时间内轻松地从网络上提取 1 Gb 的文件,但我无法在更短的时间内通过网络发送 500 Mb 的文件。

答案1

两个想法:

  1. 尝试不同的密码
  2. 使用“即时”压缩

1. 尝试不同的密码:

一个方法是测试各种可用的密码,scp并尝试确定哪种密码对您来说是最快的。(这背后的想法是,数据的加密占用了时间。)通过运行以下命令查找可用的密码:

andrew@athens:~$ ssh -Q cipher
3des-cbc
blowfish-cbc
cast128-cbc
arcfour
arcfour128
arcfour256
aes128-cbc
aes192-cbc
aes256-cbc
[email protected]
aes128-ctr
aes192-ctr
aes256-ctr
[email protected]
[email protected]
[email protected]
andrew@athens:~$ 

这显示了默认 Xenial Xerus 安装中可用的密码,并且可以使用您已经建议的语法添加:

scp -c <cipher> [FILE] [USER]@[ADDRESS]:[PATH]

此选项直接传递给ssh因此测试ssh自身可用的密码。希望您能找到一个可以提高传输速度的密码,找到此密码后,您可以将其放入~/.ssh/config而不是每次都输入...

2. 使用‘即时’压缩:

scp能够“即时”压缩您的传输,这意味着压缩仅在传输期间使用,主机或远程端均看不到。使用以下选项添加-C

scp -c <cipher> -C [FILE] [USER]@[ADDRESS]:[PATH]

以下是我自己的系统上的一个例子:

debug1: compress outgoing: raw data 365865, compressed 150118, factor 0.41
debug1: compress incoming: raw data 150118, compressed 365865, factor 2.44

压缩级别与使用的级别相同,如果您确实想尝试,可以使用“CompressionLevel”选项,该选项的范围为 1-9,1 表示压缩速度最快,9 表示压缩速度最慢且压缩效果最好,6 为默认值。可以按如下方式gzip设置:~/.ssh/config

Host *
Compression yes
CompressionLevel 9

请记住,这会为全部 scp / ssh传输,如果您愿意,可以为单个主机设置......

使用该-v选项调查您所做的任何更改的效果。通过实验,您会注意到不同的数据将具有不同的压缩率。

相关内容