我使用以下命令在我的家庭网络中传输文件(当我需要传输大量文件时,我通常使用该tar
实用程序将它们存档):
scp -c blowfish [FILE] [USER]@[ADDRESS]:[PATH]
将 500 Mb 的数据发送到另一台计算机大约需要 25 分钟。平均速度约为 600 KB/s。我认为绝对有办法加快这个过程,因为我不相信我能在不到 10 分钟的时间内轻松地从网络上提取 1 Gb 的文件,但我无法在更短的时间内通过网络发送 500 Mb 的文件。
答案1
两个想法:
- 尝试不同的密码
- 使用“即时”压缩
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
选项调查您所做的任何更改的效果。通过实验,您会注意到不同的数据将具有不同的压缩率。