J'utilise rsync 3.1.1 pour synchroniser deux disques, dont l'un est sur le réseau et monté en tant que partage samba /mnt/ROUTER_WD_2TB/
. Il s'agit de la source, avec une vitesse maximale de 30 à 40 Mo / s en raison des limitations du réseau. L'autre, la destination, est monté localement (crête 110 Mo / s) et l'est /mnt/BACKUP_HITACHI_2TB/
.
J'utilise la commande rsync suivante:
rsync -haAXi --quiet --append-verify --delete /mnt/ROUTER_WD_2TB/* /mnt/BACKUP_HITACHI_2TB/.
Les disques contiennent de nombreux fichiers, pour la plupart petits.
Le problème est que rsync prend assez de temps (10-20m) avant de commencer à déplacer des fichiers, je suppose parce qu'il doit calculer des listes de fichiers pour un très grand nombre de petits fichiers. Pendant cette période, l'utilisation de newtwork se situe à un faible 200-500KB / s, tandis que lors du transfert de fichiers, la vitesse est d'environ 40MB / s.
Il arrive généralement que rsync prenne environ 15 minutes pour finalement trouver quelque chose qu'il doit copier, puis 5 secondes pour le copier, puis continue de rechercher d'autres fichiers à copier pendant encore 5 minutes. Dans l'ensemble, une copie de fichier de 5 secondes finit par durer 20 minutes!
Existe-t-il une mesure que je pourrais prendre pour éviter cette longue période avant de copier les fichiers, à l'exception de l'exclusion des dossiers? Tout type de "cache" que je peux implémenter pour que rsync n'ait pas à reconstruire toute la liste des fichiers à partir de zéro?
Réponses:
En ce
rsync
qui vous concerne, vous copiez entre deux arborescences de fichiers locales, donc il désactive la plupart de ses optimisations (y compris son algorithme delta pour lequel il est célèbre). Si vous pouvez exécuter unrsync
sur votre serveur distant (afin d'obtenir un véritable scénario client-serveur sur votre réseau), vous gagnerez beaucoup de traction.Néanmoins, voici d'autres options à considérer
Copier sans se soucier de supprimer les anciens fichiers. Cela peut vous permettre d'effectuer un transfert plus rapide plus souvent et de reléguer le nettoyage plus lent à dire, une seule fois par jour:
Utilisez une variante de
rsync
l'algorithme de suppression par défaut de pour éviter de créer une liste complète de fichiers avant le transfert:Divisez les répertoires de niveau supérieur en tâches distinctes et exécutez-les en parallèle. Vous constaterez peut-être que si vous êtes lié au disque, cela n'aidera pas vraiment, et pour les plateaux en rotation, cela aggravera certainement les choses.
Si aucune de ces suggestions aide il serait alors intéressant d' ajouter une autre
--verbose
pourrsync
voir ce qu'il fait. Je soupçonne que cela se répercute sur tous les fichiers inchangés, et si vous avez suffisamment de fichiers, cela prend simplement beaucoup de temps.la source
--delete --delete-during
ne l'a pas fait pour moi - qui a toujours envoyé une liste de fichiers incrémentielle - mais--delete --delete-before
est allé directement à:,building file list
ce qui semble être un progrès majeur. Je pense.--delete-before
,rsync
effectue ensuite deux passes dans l'arborescence de fichiers: une pour les suppressions et la suivante pour la copie.vous pouvez utiliser
-vv
pour voir le journal complet dersync
.la source