Giving 'scp' go faster stripes
It is well documented around the web that transferring files with
scp is not the quickest option on the block.
If you have no other option but to use
scp to transfer files, there is a simple way to make
scp go a little faster by changing the
cipher used for encrypting the data transfer.
scp -c <cypher> local.file remote:/destination/remote.file
In using the
blowfish rather than the default
3des in tests gave about a 50% increase in throughput.
$ scp -c blowfish dailyrep.rdf arcsvr:/reports/networker/20080610.rdf
arcfour cipher this was found to be faster than blowfish on the UltraSPARC T2 CPUs:
$ scp -c arcfour dailyrep.rdf arcsvr:/reports/networker/20080610.rdf
3des is the default cipher for protocol 1 and aes cbc is the default cipher for protocol 2.
Whilst different ciphers have impact on the performance on the data transfer, here in order from faster to slower are the ciphers are I have tested.
- arcfour >> blowfish >> aes >> 3des
My default choice for sometime has been blowfish for both speed and security.
Update You should be aware of the possible security problems of blowfish and it is suggested not to be used.
It is also a good idea to enable compression by default so that ssh performs better over a low-bandwidth link, such as a slow Internet connection. I put these lines into my
Host * Ciphers blowfish-cbc Compression yes CompressionLevel 6
The first line tells ssh/scp that these configuration applies to all hosts. The Ciphers line tells ssh/scp of version 2 to use blowfish-cbc. The 3rd and 4th lines enable compression and set its level.