J'avais besoin de transférer un fichier vdisk KVM de 20 Go , stockant le système de fichiers racine d'une machine virtuelle CentOS 6.5, d'un serveur de laboratoire à un autre. La grande taille du fichier et le fait que j'avais déjà compressé un tel fichier vdisk à quelques centaines de méga-octets m'ont instinctivement permis la compression avec scp
mais j'ai été surpris de voir une vitesse de transfert assez faible. Ensuite, j'ai essayé bzip2
en combinaison avec ssh
et cat
et j'ai été surpris. Voici le résumé des méthodes et du débit moyen.
scp -C vm1-root.img root@192.168.161.62:/mnt/vdisks/
, 11 Mo / s.bzip2 -c vm1-root.img | ssh -l root 192.168.161.62 "bzip2 -d -c > /mnt/vdisks/vm1-root.img"
, 5 Mo / s. Ce résultat encore plus faible a incité à rechercher sur le Net.scp -c arcfour -C vm1-root.img root@192.168.161.62:/mnt/vdisks/
, 13 Mo / s. Cette utilisation de-c arcfour
as a été suggérée dans une réponse sur serverfault. Cela n'a guère aidé. Enfin, j'ai désactivé la compression.scp vm1-root.img root@192.168.161.62:/mnt/vdisks/
, 23 Mo / s.
La compression n'aurait-elle pas dû être plus rapide?
EDIT: Je ne sais pas pourquoi la question a été rejetée. Je pensais qu'il y avait quelque chose à apprendre ici.
Après avoir reçu le ssh(1)
conseil de la page de manuel de @sven, j'ai essayé quelques méthodes alternatives de transfert de fichiers n'impliquant pas de compression, les deux avec de meilleurs résultats.
cat vm1-root.img | ssh -l root 192.168.161.62 "cat > /mnt/vdisks/vm1-root.img"
, 26 Mo / s.nc -l 5678 > /mnt/vdisks/vm1-root.img
sur le récepteur etnc 192.168.161.62 5678 < vm1-root.img
l'émetteur, 40 Mo / s. Le port5678
est arbitraire et disponible.
L'utilisation nc
s'est avérée être la méthode de copie la plus rapide!
Dans le passé, scp -C
a très bien fonctionné chaque fois que je le pensais. Par exemple, lors du transfert de syslogs ( /var/log/messages*
) de quelques Go de taille. Un taux de transfert non compressé de quelques centaines de Ko / s passerait à 1-2 Mo / s. Cet exemple tombe dans le cas d'une connexion lente comme cela a été souligné dans la page de manuel.
J'ai un cas où, une image vdisk nouvellement créée pour une partition de 20 Go a une taille compressée de seulement 200 Mo. Avec un taux de transfert d'environ 25 Mo / s, nous avons pu faire la copie en seulement 8 secondes au lieu de plus de 13 minutes! De toute évidence, scp
sans compression est inefficace dans ce cas et scp -C
est encore pire.
Je suppose que la principale leçon apprise ici est que, scp -C
devrait être considéré comme étant seulement une commodité. Si un fichier peut être compressé de manière significative, il est préférable de le compresser d'abord sur la source, de transférer le formulaire compressé et enfin de décompresser sur la destination. Les outils qui effectuent la compression et la décompression rapidement (par exemple pbzip2 ) seront d'une plus grande aide.