Surveillance des progrès de Rsync
Je suis en train d'écrire un script Python qui sera chargé de surveiller un rsync de transfert, et de fournir une (grossière) estimation du pourcentage d'avancement. Pour ma première tentative, j'ai regardé un rsync --progress
de commande et vu qu'elle imprime des messages tels que:
1614 100% 1.54 MO/s 0:00:00 (xfer#5,-check=4/10)
J'ai écrit un analyseur syntaxique pour de tels messages, et utilisé la case à une partie de produire un pourcentage de progression, ici, ce serait de 60%.
Cependant, il y a deux failles:
- En gros transferts, le "numérateur" de la case fraction ne semble pas monotone baisse, de sorte que le pourcentage d'exhaustivité pouvez sauter vers l'arrière.
- Un tel message n'est pas imprimé pour tous les fichiers, ce qui signifie que le progrès peut avancer.
J'ai eu un coup d'oeil à d'autres alternatives de messages à utiliser, mais je n'ai pas réussi à trouver quoi que ce soit. Quelqu'un a une idée?
Merci d'avance!
source d'informationauteur paulmdavies
Vous devez vous connecter pour publier un commentaire.
La version actuelle de rsync (au moment de l'édition 3.1.2) a une option
--info=progress2
qui va vous montrer les progrès de l'ensemble de transfert de fichiers individuels.De la page de man:
Donc, si possible sur votre système, vous pourriez mettre à niveau rsync pour une version actuelle qui contient cette option.
Vous pouvez désactiver l'augmentation de la récursivité avec l'argument
--no-inc-recursive
. rsync va faire une pré-analyse de l'ensemble de la structure de répertoire, de sorte qu'il sait le nombre total de dossiers à vérifier.C'est en fait l'ancienne manière, il recursed. Différentiels de la récursivité, le courant de défaut a été ajouté pour la vitesse.
Note de la mise en garde ici que, même
--info=progress2
est pas entièrement fiable puisque c'est le pourcentage basé sur le nombre de fichiers rsync sait au moment où la progression est affichée. Ce n'est pas nécessairement le nombre total de fichiers qui doivent être synchronisés (par exemple, si elle découvre un grand nombre de fichiers volumineux dans un profondément imbriqués répertoire).Une façon de s'assurer que
--info=progress2
n'est pas revenir dans le progrès indication serait à force de rsync pour analyser tous les répertoires de manière récursive avant de commencer la synchronisation (au lieu de son comportement par défaut de le faire progressivement récursive scan), en offrant la--no-inc-recursive
option. A noter toutefois que cette option permettra également d'augmenter rsync l'utilisation de la mémoire et de l'exécution.Pour le plein contrôle sur le transfert, vous devez utiliser un plus faible niveau de l'outil de comparaison et de gérer l'inscription à l'annuaire et le transfert de données vous-même.
Basé sur librsync il y a la ligne de commande rdiff ou le module python pysync