GNU/Linux >> Tutoriels Linux >  >> Linux

Pourquoi Scp est-il si lent et comment le rendre plus rapide ?

J'essaie de copier un lot de fichiers avec scp mais c'est très lent. Voici un exemple avec 10 fichiers :

$ 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

Ce qui est étrange, c'est que le taux de transfert est d'environ 413 Ko/s et que la taille du fichier est d'environ 413 Ko. Il devrait donc transférer un fichier par seconde, mais cela prend environ 4,3 secondes par fichier.

Avez-vous une idée d'où vient cette surcharge et existe-t-il un moyen de l'accélérer ?

Réponse acceptée :

Le commentaire de @wurtel est probablement correct :il y a beaucoup de temps système pour établir chaque connexion. Si vous pouvez résoudre ce problème, vous obtiendrez des transferts plus rapides (et si vous ne pouvez pas, utilisez simplement le rsync de @roaima solution de contournement). J'ai fait une expérience en transférant des fichiers de taille similaire (head -c 417K /dev/urandom > foo.1 et fait des copies de ce fichier) à un hôte qui met du temps à se connecter (HOST4) et qui répond très rapidement (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. Comment rendre le fichier et le répertoire ineffaçables, même par racine sous Linux

  2. Comment transférer des fichiers sous Linux avec SCP et Rsync

  3. Comment rendre ce script sed plus rapide ?

  4. Comment créer et appliquer un patch SVN ?

  5. Comment fonctionne la liaison dynamique, son utilisation et comment et pourquoi créer une dylib

Comment utiliser et tirer le meilleur parti de la commande fuser sous Linux

Comment créer une clé USB multiboot sous Linux et Windows

Comment rendre le système Linux plus rapide sur les processeurs Intel

Qu'est-ce que les conteneurs multi-comptes Firefox ? Pourquoi et comment l'utiliser ?

Comment et pourquoi utiliser Linux pour installer Telnet

Comment installer et utiliser Pigz pour compresser des fichiers plus rapidement sous Linux