Lors de l'exécution de rsync
sur un répertoire avec beaucoup de fichiers et de répertoires à plusieurs niveaux, pouvons-nous estimer la quantité de travail ou le temps pour terminer ?
-
l'option de progression affiche uniquement la progression du transfert d'un seul fichier, pas la progression du transfert de tous les fichiers et répertoires sous le répertoire source.
-
Une façon, je suppose, est de regarder les répertoires qu'il a
transférés jusqu'à présent, et de comparer cela à la source.Cela m'aidera beaucoup si je connais l'ordre des fichiers et des répertoires dans
dontrsync
les transfère.Je suppose que cela peut être lié à ce
rsync
exécute plusieurs threads et que fait chaque thread ?Je ne suis pas sûr de l'ordre qu'il choisit, et ma supposition précédente de la première commande de pain ne semble pas correcte (je l'ai donc barrée).
Réponse acceptée :
Vous pouvez faire rsync
imprimer une ligne par fichier en utilisant -i
puis utilisez pv -l
pour signaler la progression en fonction du nombre de lignes (en fait, le nombre de fichiers).
Vous aurez besoin de pv
(visualiseur de tubes) :http://www.ivarch.com/programs/pv.shtml
rsync -ai sourcedir/ targetdir/ | pv -l -s filecount > logfile
Utilisez la commande suivante pour obtenir le nombre de fichiers :
find sourcedir | wc -l
Remarque :cette commande affiche les informations de progression en fonction du nombre de fichiers copiés. Cela fonctionne mieux s'il y a beaucoup de petits fichiers. S'il n'y a que quelques fichiers volumineux, vous ne vous amuserez pas beaucoup.
Pour voir la progression lorsque vous mettez à jour (ou comparez) une copie existante :
(plus d'informations :comparer les répertoires mais pas le contenu des fichiers)
rsync -aii --delete sourcedir/ targetdir/ | pv -l -s filecount > logfile
Le deuxième -i
oblige rsync à imprimer une ligne par fichier même si elles sont égales.
Ajouter -n
pour comparer (et non copier ou supprimer quoi que ce soit).
Omettre --delete
au besoin.
Cette commande imprimera à l'écran en temps réel les fichiers qui diffèrent :
rsync -aii --delete sourcedir/ targetdir/ | pv -l -s filecount |
tee logfile | grep -v "^."
Les commandes ci-dessus fonctionnent mieux lorsqu'il y a beaucoup de petits fichiers. Si vous avez peu de fichiers volumineux, certains des rapports de progression intégrés à rsync pourraient vous être plus utiles. Voir la page de manuel rsync pour -P
ou --progress
ou --info=progress2
. Mais attention :ces options ne fonctionneront pas bien avec pv
. Ou du moins je n'ai pas trouvé comment.
Voici une solution de contournement grossière pour voir les progrès en fonction de la taille :
- notez l'espace libre de la partition cible avant de copier en utilisant
df -h
. - notez la taille du répertoire source en utilisant
du -sh
. - utiliser
watch df -h
et regardez la taille grandir.
Évidemment, cela ne fonctionne que lors de la copie et non lors de la mise à jour ou de la comparaison.