J'utilise Ubuntu 12.04 comme dépôt et souhaite afficher une barre de progression lors de l'utilisation de rsync
à partir de la ligne de commande. J'ai essayé l'option suggéré dans cet article (-P
), mais je préfère voir une barre de progression et ne pas utiliser Grsync. J'utilise actuellement rsync -P source dest
.
Que dis-tu de ça?
rsync_param="-av"
rsync "$rsync_param" a/ b |\
pv -lep -s $(rsync "$rsync_param"n a/ b | awk 'NF' | wc -l)
$rsync_param
Evite la double saisie de paramètres
$(rsync "$rsync_param"n a/ b | awk 'NF' | wc -l)
Détermine le nombre d'étapes à effectuer.
a/ b
a/
est la sourceb
est la ciblersync a une option --info
qui peut être utilisée pour afficher non seulement l'avancement actuel, mais également le taux de transfert et le temps écoulé:
--info=FLAGS fine-grained informational verbosity
L'explication de son utilisation se trouve sous l'option -P
dans la page de manuel:
-P The -P option is equivalent to --partial --progress. Its purpose is to
make it much easier to specify these two options for a long transfer that
may be interrupted.
There is also a --info=progress2 option that outputs statistics based on
the whole transfer, rather than individual files. Use this flag
without out‐putting a filename (e.g. avoid -v or specify --info=name0)
if you want to see how the transfer is doing without scrolling the screen
with a lot of names. (You don’t need to specify the --progress
option in order to use --info=progress2.)
Donc ce qui suit:
rsync -r --info=progress2 --info=name0 "$src" "$dst"
Les résultats suivants sont en sortie et mis à jour en permanence:
18,757,542,664 100% 65.70MB/s 0:04:32 (xfr#1389, to-chk=0/1510)
Notez que lorsque le transfert commence, le nombre total de morceaux, et donc la progression actuelle, peut changer lorsque l'option récursive est utilisée à mesure que davantage de fichiers sont découverts pour la synchronisation
Vous pouvez utiliser les paramètres --progress
et --stats
.
rsync -avzh --progress --stats root@server:/path/to/file output_name
root@server's password:
receiving incremental file list
file
98.19M 54% 8.99MB/s 0:00:08
Cela a finalement fonctionné:
rsync "$rsync_param" -a --Prune-empty-dirs --exclude "*.iso" rsync://archive.ubuntu.com/ubuntu/indices/ /repo/ubuntu/indices | pv -lep -s $(rsync "$rsync_param"n rsync://archive.ubuntu.com/indices/ /repo/ubuntu/indices | awk 'NF' | wc -l)
Si votre version de rsync
n'accepte pas l'option --info=progress2
, vous pouvez utiliser tqdm
NAME _ :
À installer:
pip install tqdm
Utiliser:
$ rsync -av/source/dest | tqdm --unit_scale | wc -l 10.0Mit [00:02, 3.58Mit/s]
Ouais, fais quoi dit Jon : utilise l'option --info=progress2
. Mais que faire si ma version de rsync est trop ancienne et ne prend pas en charge cette option? Réponse: mettez à niveau rsync!
rsync
à partir de la source sur Ubuntu(testé sur Ubuntu 16.04)
cd
name__ed dans ce répertoire extrait contenant le code source rsync
name__.Vérifiez la version actuelle de rsync
name__. Notez-le pour que vous puissiez voir plus tard qu'il a été mis à jour.
rsync --version
Installez les outils nécessaires:
Sudo apt update
Sudo apt install yodl
Construire:
./configure
make
Sudo make install
Assurez-vous qu'il a été mis à jour:
rsync --version
Exemple de sortie:
$ rsync --version rsync version 3.1.3 protocol version 31 Copyright (C) 1996-2018 by Andrew Tridgell, Wayne Davison, and others. Web site: http://rsync.samba.org/ Capabilities: 64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints, socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace, append, no ACLs, xattrs, iconv, symtimes, prealloc rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. See the GNU General Public Licence for details.
Recherchez dans les pages de manuel "progress2". Vous aurez maintenant accès à l'option --info=progress2
:
man rsync
... puis appuyez sur la touche /
et tapez progress2
; appuyez sur Entrée pour le rechercher; appuyez sur n
pour le match 'n'ext jusqu'à ce que vous trouviez l'entrée recherchée:
Il existe également une option
--info=progress2
qui génère des statistiques basées sur le transfert complet, plutôt que sur des fichiers individuels. Utilisez cet indicateur sans générer de nom de fichier (par exemple, évitez-v
ou spécifiez--info=name0
) si vous souhaitez savoir comment se déroule le transfert sans faire défiler l'écran avec beaucoup de noms. (Vous n’avez pas besoin de spécifier l’option--progress
pour utiliser--info=progress2
.)