2 votes

Pourquoi scp est-il plus rapide que rsync?

J'ai toujours eu l'impression que rsync devait être au moins aussi rapide que scp. Mais là j'ai un problème. Quand j'utilise rsync -avr pour copier des données depuis la machine à distance, j'obtiens environ 11 Mo/s. Si j'utilise scp sur le même fichier, j'obtiens 28 Mo/s.

Comment cela se fait-il ? Il s'agit d'un répertoire avec de nombreux fichiers, mais le plus grand est un seul fichier de 1 Go. Je veux dire, il y a quelque chose qui ne va pas avec la connexion, cela devrait être 1 Gbit et je n'obtiens que ~300 Mbit, mais quand même, c'est bizarre que rsync soit tellement plus lent ici...

Des suggestions ? Merci.

0voto

Sethos II Points 146

Une différence entre scp et rsync est que rsync vérifie les fichiers transférés alors que scp ne le fait pas.

D'après la page de manuel de rsync:

Notez que rsync vérifie toujours que chaque fichier transféré a été correctement reconstruit du côté récepteur en vérifiant un checksum de fichier entier qui est généré pendant le transfert du fichier, mais que la vérification automatique après le transfert n'a rien à voir avec l'option de vérification avant le transfert "Ce fichier a-t-il besoin d'être mis à jour ?".

Cela pourrait être une source de différence de performances.

0voto

wbob Points 131

.. lorsqu'il transfère un gros fichier, il atteint environ 11 Mo/s.

Sans le savoir, vous pourriez avoir causé un transfert partiel en comparant les taux de transfert, ce qui pourrait ralentir le CPU.

Rsync effectue par défaut un transfert delta s'il détecte un fichier partiel sur le récepteur (restant du test scp ?). La méthode de "checksum roulant" pour comparer ce qui doit être transféré va se traduire par une utilisation accrue du CPU du côté de l'expéditeur.

J'ai remarqué une diminution de 4 fois du taux de transfert sur un gros fichier binaire partiel avec un CPU faible en tant qu'expéditeur (Intel Atom ou des instances VM plus petites). Sur des machines plus puissantes, le taux de transfert est resté stable après l'analyse initiale du fichier partiel lors de la poursuite du transfert. La différence de débit par rapport à netcat devrait provenir du chiffrement via ssh.

Indiquer explicitement à rsync de ne pas utiliser de transferts partiels (-W|--whole-file) ramènera les taux de transfert dans la même fourchette. Si nécessaire, --append est une autre manière de reprendre un transfert de fichier interrompu sans provoquer de transfert delta. get -a dans sftp permet également de reprendre un téléchargement.

Consultez la description de l'architecture de Rsync pour plus d'explications.

0voto

Modesty Blaise Points 1

Vous avez oublié la vitesse de votre HDD. SATA 2 ou SATA 3? La vitesse d'écriture maximale pour SATA 2 serait d'environ 300 Mo/s et pour SATA 3 600 Mo/s, alors disons, la vitesse réelle que vous pouvez obtenir est de 35-150 Mo/s. Seul un lecteur NVME serait capable de gérer une vitesse de réseau de 1 Gbps, donc vous pourriez obtenir 600-800 Mo/s. :-)

P.S. Utilisez rsync -a --progress /home...Le processus de zip tue votre CPU, de cette manière le transfert ira jusqu'à la vitesse maximale d'écriture de votre HDD.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X