我使用以下命令通过我的家庭网络传输文件(当我必须传输大量文件时,我通常使用该tar
实用程序将它们存档):
scp -c blowfish [FILE] [USER]@[ADDRESS]:[PATH]
Run Code Online (Sandbox Code Playgroud)
将 500 Mb 的数据发送到另一台计算机大约需要 25 分钟。平均速度约为 600 KB/s。我认为绝对必须有一种方法可以使过程更快,因为我不相信我能够在不到 10 分钟的时间内轻松地从 Web 上提取 1 Gb 文件,但我无法获得 500 Mb文件在更短的时间内通过网络发送。
两个想法:
1. 尝试不同的密码:
一种想法是测试各种可用的密码,scp
并尝试确定哪种密码对您来说最快。(这背后的想法是,它是占用时间的数据加密。)通过运行以下命令找到可用的密码:
andrew@athens:~$ ssh -Q cipher
3des-cbc
blowfish-cbc
cast128-cbc
arcfour
arcfour128
arcfour256
aes128-cbc
aes192-cbc
aes256-cbc
rijndael-cbc@lysator.liu.se
aes128-ctr
aes192-ctr
aes256-ctr
aes128-gcm@openssh.com
aes256-gcm@openssh.com
chacha20-poly1305@openssh.com
andrew@athens:~$
Run Code Online (Sandbox Code Playgroud)
这显示了默认 Xenial Xerus 安装上的可用密码,并且可以使用您已经建议的语法添加:
scp -c <cipher> [FILE] [USER]@[ADDRESS]:[PATH]
Run Code Online (Sandbox Code Playgroud)
此选项直接传递给ssh
因此测试ssh
可用密码。希望您能找到一种可以提高传输速度的密码,当您找到此密码后,您可以将其放入~/.ssh/config
而不是每次都输入...
2. 使用“即时”压缩:
scp
能够“即时”压缩您的传输,这意味着压缩仅在传输期间使用,不会在主机或远程端看到。在使用-C
选项中添加它:
scp -c <cipher> -C [FILE] [USER]@[ADDRESS]:[PATH]
Run Code Online (Sandbox Code Playgroud)
这是我自己系统上的示例:
debug1: compress outgoing: raw data 365865, compressed 150118, factor 0.41
debug1: compress incoming: raw data 150118, compressed 365865, factor 2.44
Run Code Online (Sandbox Code Playgroud)
压缩级别与用于的相同gzip
,如果您真的想进行实验,可以使用“CompressionLevel”选项,该选项从 1 到 9 不等,1 是最快的压缩,9 是最慢的压缩最佳,6 是最慢的默认。这可以设置~/.ssh/config
如下:
Host *
Compression yes
CompressionLevel 9
Run Code Online (Sandbox Code Playgroud)
请记住,这会为所有 scp / ssh
传输设置高压缩率,如果您愿意,可以为单个主机设置...
使用该-v
选项调查您所做的任何更改的影响。您会通过实验注意到不同的数据将具有不同的压缩率。
归档时间: |
|
查看次数: |
22129 次 |
最近记录: |