Tout d'abord, le nombre de fichiers dans ce cas va être un facteur important. La taille moyenne de chaque fichier est de 3 Mo. Il y a probablement un goulot d'étranglement io qui influence la vitesse dans le cas de l'OP. Plus d'informations ici - C'est une lecture plutôt aride, mais la photo de couverture vaut le coup.
Donc, utiliser rsync pour copier dans un répertoire vide ? Voici quelques moyens d'accélérer le processus :
- Non -z - n'utilisez surtout pas -z comme dans l'OP.
-
--no-compress pourrait vous accélérer. Cela pourrait avoir le plus grand impact ... mon test portait sur 13 000 fichiers, d'une taille totale de 200 Mo, et utilisait rsync 3.1.3. J'ai synchronisé vers une partition différente sur le même disque SSD interne. Avec --no-compress, j'obtiens 18 MBps, et sans cela j'obtiens 15 MBps. cp, d'ailleurs, obtient 16 MBps. La taille moyenne des fichiers est cependant beaucoup plus petite. Par ailleurs, je ne trouve aucune documentation sur la fonction --no-compress. Je l'ai appris grâce à cet article sur stackexchange.com.
- -W à copier des fichiers entiers - utilisez toujours ceci si vous ne voulez pas qu'il compare les différences ; ne tenez pas compte du fait que le but de rsync est de comparer les différences et de mettre à jour uniquement les changements.
- -S à gérer fichiers épars ça ne peut pas faire de mal si vous n'avez pas de fichiers épars.
-
--exclude-from ou quelque chose de similaire pour exclure les fichiers dont vous n'avez peut-être pas besoin réduira le temps, mais n'augmentera pas votre vitesse de transfert.
- C'est possible si vous envoyez la sortie dans un fichier comme ceci
rsync -a /source /destination >/somewhere/rsync.out 2>/somewhere/rsync.err
- la première > imprime essentiellement un fichier avec toutes les choses que vous verriez normalement, et la 2> fait référence aux messages d'erreur.
- Enfin, Exécution de plusieurs instances de rsync pour différentes parties de votre transfert pourrait être d'une grande aide.
Mon commandement serait :
rsync -avAXEWSlHh /source /destination --no-compress --info=progress2 --dry-run
Si tout semble bien, j'efface "--dry-run" et je laisse faire. A, X, et E couvrent les attributs étendus et les permissions non couvertes par -a, l est pour les liens souples, H est pour les liens durs, et h est pour lisible par l'homme.
La mise à jour d'un répertoire déjà synchronisé sur une clé USB, ou sur le même disque, ou encore sur un réseau, nécessitera des commandes rsync différentes pour maximiser la vitesse de transfert.
Bonus - voici la page de manuel rsync et si vous voulez tester la vitesse de votre disque dur, bonnie++ est une bonne option, et pour la vitesse de votre réseau, essayez iperf .
*Ce billet a presque dix ans, mais les moteurs de recherche l'apprécient et je continue à le voir. C'est une bonne question, et je ne pense pas que la réponse principale à "comment accélérer rsync" devrait être "utilisez cp à la place".