Faire en sorte que rsync utilise moins de bande passante?

46

J'utilise rsync pour sauvegarder et synchroniser les partages réseau et mon ordinateur. J'ai ceci compris.

Le problème est que, lorsque vous utilisez rsync pour transférer des fichiers, il utilise toute la bande passante possible. Je veux limiter sa vitesse, de sorte que je puisse utiliser ma connexion pour autre chose.

Plus précisément, en ce moment, j'écoute Last.FM, mais il continue à couper, car rsync sature la connexion locale.

Cela semble peu probable, mais dans ce cas, mon réseau local est vraiment aussi rapide que mon internet (10 mégabits pour les deux, université yay!). Quoi qu'il en soit, je n'ai pas de bande passante supplémentaire lorsque rsync est en cours d'exécution. Des idées?

Oh, au fait, en particulier, je suis sous Ubuntu 9.04.

Mike Cooper
la source

Réponses:

67

Utilisez l' --bwlimit=KBPS option pour limiter la bande passante d'E / S, Koctets par seconde

Reportez-vous également à la page de manuel .

DaveParillo
la source
Parfait. Je ne sais pas pourquoi j'ai raté ça dans la manpage la première fois.
Mike Cooper
8
après le fait, mais je voulais faire remarquer que cette option limite la bande passante moyenne. le premier fichier est envoyé à fond et les fichiers suivants sont restreints pour tenter d'atteindre la valeur de bande passante spécifiée. pour vraiment limiter la bande passante, vous voudriez vous pencher sur quelque chose comme:trickle
joshtronic le
1
@ joshtronic Je me suis demandé si vous aviez remarqué la réponse de supervacuo? Je l'ai maintenant testé et je peux témoigner du fait que "le premier fichier est envoyé à fond" n'est pas vrai, sauf pour les plus petits fichiers.
20

(Ce serait idéalement une réponse au commentaire de joshtronic )

--bwlimit=XXen fait, le problème est opposé; le transfert est en effet une moyenne mobile - comme l' explique utilement Rsync Basics :

En raison de la nature des transferts rsync, des blocs de données sont envoyés. Si rsync détermine que le transfert était trop rapide, il attendra avant d'envoyer le prochain bloc de données. Le résultat est un taux de transfert moyen égal à la limite spécifiée.

Il n'est pas clair si la moyenne est prise à travers les fichiers, mais dans tous les cas, il n'est pas vrai que

le premier fichier est envoyé à fond et les fichiers suivants sont restreints pour tenter d'atteindre la valeur de bande passante spécifiée

En fait, le premier fichier sera limité tant qu'il sera suffisamment volumineux pour permettre à la moyenne de démarrer (ce qui signifie tous les fichiers sauf les plus petits).

Vous avez raison, ce genre de solution constituerait une meilleure solution, mais d'après ce que je comprends du document explicatif (" Trickle: un transformateur de bande passante Userland pour les systèmes de type Unix "), cela fonctionne trickle également en retardant les E / S sur la base d'une moyenne de transfert variable. . J'espère que le recommander consiste à utiliser une mesure à fréquence plus élevée pour appliquer la moyenne. Je n'ai pas été en mesure de trouver de données en ligne qui le confirment (bien que l'article ci-dessus qualifie rsyncle code de "simple", suggérant aux auteurs de trickleThink de faire un meilleur travail).

supervacuo
la source