J'utilise rsync pour synchroniser un répertoire sur mon disque dur USB externe. C'est environ 150 Go de données. Plus de 50000 fichiers, je suppose.
Il est en train de lancer sa première synchronisation pour le moment, mais sa copie s'effectue à un taux de seulement 1 à 5 Mo/s. Cela semble incroyablement lent pour un boîtier USB 2.0. Il n'y a pas d'autre transfert sur le lecteur non plus.
Voici les options que j'ai utilisées:
rsync -avz --progress /mysourcefolder /mytargetfolder
J'utilise Ubuntu Server 9.10.
Pour la première synchronisation, utilisez simplement
cp -a /mysourcefolder /mytargetfolder
rsync n’ajoute de surcharge que lorsque la destination est vide.
aussi .. l'option -z tue probablement votre performance, vous ne devriez pas l'utiliser si vous ne transférez pas de données sur un lien lent.
Si vous utilisez rsync avec un réseau rapide ou un disque à l’autre sur le même ordinateur,
pas en utilisant la compression -z
et en utilisant --inplace
l'accélère aux performances des disques durs ou du réseau
la compression utilise beaucoup de CPU
pas en utilisant inplace rend le disque dur thrash beaucoup (il utilise un fichier temporaire avant de créer le fichier final)
la compression et le fait de ne pas utiliser inplace est préférable pour le faire sur Internet (réseau lent)
NOUVEAU: soyez conscient de la destination ... s'il existe une "compression" NTFS activée ... cela ralentit considérablement les gros fichiers (je dirais plus de 200 Mo) rsync semble presque bloqué, c'est à cause de cela.
Utilisez l'option -W
. Ceci désactive les comparaisons delta/diff. Lorsque la taille et la durée du fichier diffèrent, rsync copie le fichier entier.
Supprimez également l'option -z
. Ceci n’est utile que pour la compression du trafic réseau.
rsync
devrait maintenant être aussi rapide que cp
.
Premièrement, le nombre de fichiers dans ce cas va être un facteur majeur. C'est une taille moyenne de 3 Mo chacun. Il y a probablement un goulot d'étranglement qui influence la vitesse dans le cas du PO. Plus ici - c'est une lecture plutôt sèche, mais la photo de couverture en vaut la peine.
Alors, en utilisant rsync pour copier dans un répertoire vide? Voici quelques moyens pour l'accélérer:
rsync -a /source /destination >/somewhere/rsync.out 2>/somewhere/rsync.err
- le premier> imprime essentiellement un fichier avec tout ce que vous verriez normalement, et le 2> fait référence aux messages d’erreur.Ma commande serait:
rsync -avAXEWSlHh /source /destination --no-compress --info=progress2 --dry-run
Si tout semblait bien aller, je supprimerais "--dry-run" et le laisserais tomber. A, X et E couvrent les attributs étendus et les autorisations non couvertes par -a, l pour les liens symboliques, H pour les liens fixes et h pour les informations lisibles par l'homme.
La mise à jour d'un répertoire déjà synchronisé sur un lecteur USB, ou le même lecteur, ou sur un réseau, nécessitera toutes des commandes rsync différentes pour optimiser la vitesse de transfert.
Bonus - Voici la page de manuel de rsync , et si vous souhaitez tester la vitesse de votre disque dur, bonnie ++ est une bonne option et pour la vitesse de votre réseau, essayez iperf .
* La publication a presque dix ans, mais les moteurs de recherche l’apprécient, et je la vois toujours. C'est une bonne question, et je ne pense pas que la meilleure réponse à "comment accélérer rsync" devrait être "utiliser cp à la place".
Vous ne dites pas quelle est la distribution de taille de vos fichiers. S'il y a beaucoup de petits fichiers, cela réduira le taux de transfert global en augmentant le temps de latence des mouvements de la tête dans les lecteurs source et cible, à mesure que l'outil ouvre de nouveaux fichiers et que le système d'exploitation conserve les entrées de répertoire et autres métadonnées (telles que le journal du système de fichiers utilisé). la journalisation de métadonnées comme ext3/ext4 et NTFS le fait par défaut) à jour pendant le transfert. Un processus de copie de fichier n'entraînera sa progression que pour les objets volumineux, lorsqu'un simple transfert en masse est en cours.