J'essaie de transférer des milliers de petits fichiers d'un serveur à un autre à l'aide de la commande suivante:
rsync -zr --delete /home/user/ [email protected]::backup
Actuellement, le transfert prend beaucoup de temps (je ne l'ai pas chronométré). Existe-t-il un moyen d'accélérer cela? Dois-je utiliser un autre outil? Dois-je utiliser rsync sur ssh plutôt que d'utiliser le protocole rsync?
stat()
.-a
mais-r
?Réponses:
Vous devez déterminer le goulot d'étranglement. Ce n'est pas rsync. Ce n'est probablement pas la bande passante de votre réseau. Comme l'a suggéré @Zoredache, il s'agit très probablement du grand nombre d'iops générés par tous les
stat()
appels. N'importe quel outil de synchronisation devra statuer les fichiers. Pendant la synchronisation, exécuteziostat
pour vérifier.Alors la question devient; comment optimiser les statistiques? Deux réponses faciles:
noatime
et ajoutez adir_index
).Si, par hasard, ce n'est pas votre iops de disque qui est la limite, vous pouvez essayer de diviser l'arborescence dir en plusieurs arborescences distinctes et d'exécuter plusieurs rsyncs.
la source
La compression n'est pas très utile pour les petits fichiers (par exemple, moins de 100 octets). Pour les petits fichiers, la version compressée peut parfois être encore plus grande que l'original. Essayez la
rsync
commande sans le-z
drapeau.ssh
est bon pour la sécurité, mais ne rendra pas le transfert plus rapide. En fait, cela rendrait le transfert plus lent en raison du besoin de chiffrement / déchiffrement.rsync
peut ne pas sembler rapide la première fois qu'il est exécuté car il y a beaucoup de données à transférer. Cependant, si vous prévoyez d'exécuter cette commande périodiquement, les exécutions suivantes peuvent être beaucoup plus rapides car ilrsync
est judicieux de ne pas transférer les fichiers qui n'ont pas changé.la source
rsync
client, il utilisera SSH en arrière-plan. Vous devez tout faire pour désactiver le chiffrement lors de l'utilisation de rsync. Voir: stackoverflow.com/a/1821574/64911Quelle version de rsync utilisez-vous? Tout ce qui est antérieur à 3.0.0 (aux deux extrémités) n'a pas la fonctionnalité de liste de fichiers incrémentielle, ce qui accélère les transferts importants.
la source
Ajoutez
-v --progress
à votre ligne de commande rsyncrsync se fait en 2 étapes:
Si vous rsync des milliers de petits fichiers dans des répertoires imbriqués, il se peut simplement que rsync passe la plupart de ce temps à aller dans les sous-répertoires et à trouver tous les fichiers
Si vous ne passez pas de temps à naviguer, le temps peut simplement être dû à l'ajout de toutes les latences à chaque nouveau transfert de fichier.
la source
Dans le cas où des systèmes de fichiers ext3 ou ext4 sont impliqués, vérifiez que la fonction dir_index est activée sur les deux! Cela a triplé le débit rsync dans mon cas.
Voir les détails dans ma réponse à: /server//a/759421/80414
la source