GNU/Linux >> Znalost Linux >  >> Linux

Proč je scp tak pomalý a jak jej urychlit?

Snažím se zkopírovat dávku souborů pomocí scp ale je to velmi pomalé. Toto je příklad s 10 soubory:

$ time scp cap_* [email protected]:~/dir cap_20151023T113018_704979707.png 100% 413KB 413.2KB/s 00:00 cap_20151023T113019_999990226.png 100% 413KB 412.6KB/s 00:00 cap_20151023T113020_649251955.png 100% 417KB 416.8KB/s 00:00 cap_20151023T113021_284028464.png 100% 417KB 416.8KB/s 00:00 cap_20151023T113021_927950468.png 100% 413KB 413.0KB/s 00:00 cap_20151023T113022_567641507.png 100% 413KB 413.1KB/s 00:00 cap_20151023T113023_203534753.png 100% 414KB 413.5KB/s 00:00 cap_20151023T113023_855350640.png 100% 412KB 411.7KB/s 00:00 cap_20151023T113024_496387641.png 100% 412KB 412.3KB/s 00:00 cap_20151023T113025_138012848.png 100% 414KB 413.8KB/s 00:00 cap_20151023T113025_778042791.png 100% 413KB 413.4KB/s 00:00 real 0m43.932s user 0m0.074s sys 0m0.030s

Zvláštní je, že přenosová rychlost je asi 413 KB/s a velikost souboru je asi 413 KB, takže ve skutečnosti by měl přenášet jeden soubor za sekundu, ale trvá to asi 4,3 sekundy na soubor.

Máte představu, odkud tato režie pochází a existuje nějaký způsob, jak to urychlit?

Přijatá odpověď:

Komentář @wurtela je pravděpodobně správný:navázání každého spojení je hodně náročné. Pokud to dokážete opravit, získáte rychlejší přenosy (a pokud ne, použijte rsync od @roaima řešení). Provedl jsem experiment s přenosem souborů podobné velikosti (head -c 417K /dev/urandom > foo.1 a vytvořili nějaké kopie tohoto souboru) k hostiteli, kterému chvíli trvá, než se připojí (HOST4) a který reaguje velmi rychle (HOST1):

$ time ssh $HOST1 echo


real    0m0.146s
user    0m0.016s
sys     0m0.008s
$ time scp * $HOST1:
foo.1                                         100%  417KB 417.0KB/s   00:00    
foo.2                                         100%  417KB 417.0KB/s   00:00    
foo.3                                         100%  417KB 417.0KB/s   00:00    
foo.4                                         100%  417KB 417.0KB/s   00:00    
foo.5                                         100%  417KB 417.0KB/s   00:00    

real    0m0.337s
user    0m0.032s
sys     0m0.016s
$ time ssh $HOST4 echo


real    0m1.369s
user    0m0.020s
sys     0m0.016s
$ time scp * $HOST4:
foo.1                                         100%  417KB 417.0KB/s   00:00    
foo.2                                         100%  417KB 417.0KB/s   00:00    
foo.3                                         100%  417KB 417.0KB/s   00:00    
foo.4                                         100%  417KB 417.0KB/s   00:00    
foo.5                                         100%  417KB 417.0KB/s   00:00    

real    0m6.489s
user    0m0.052s
sys     0m0.020s
$ 
 

Linux
  1. Jak zajistit, aby byly soubory a adresáře neodstranitelné, a to i přes kořen v Linuxu

  2. Redis jako mezipaměť:Jak to funguje a proč ji používat

  3. Jak vyrobit a aplikovat SVN patch?

  1. Jak Linux zachraňuje pomalé počítače (a planetu)

  2. Jak přenášet soubory v Linuxu pomocí SCP a Rsync

  3. Jak zrychlit tento sed skript?

  1. Jak nainstalovat TBB ze zdroje na Linux a zprovoznit jej

  2. Jak funguje dynamické linkování, jeho použití a jak a proč byste udělali dylib

  3. Jak provést třídění ls podle přípony souboru a poté názvu?