web-dev-qa-db-fra.com

Comment puis-je afficher une barre de progression lors de l'exécution de rsync?

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.

28
Joseph Smith

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

    1. a/ est la source
    2. b est la cible
7
A.B.

rsync 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

32
Jon

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
13
fugitive

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)
2
Joseph Smith

Si votre version de rsyncn'accepte pas l'option --info=progress2, vous pouvez utiliser tqdmNAME _ :

À installer:

pip install tqdm

Utiliser:

 $ rsync -av/source/dest | tqdm --unit_scale | wc -l 
 10.0Mit [00:02, 3.58Mit/s] 
1
ostrokach

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!

Voici comment construire rsyncà partir de la source sur Ubuntu

(testé sur Ubuntu 16.04)

  1. Téléchargez la dernière version de rsync: https://download.samba.org/pub/rsync/src/ . Ex: "rsync-3.1.3.tar.gz". Enregistrez-le dans un répertoire SANS ESPACES AT TOUT pour vous assurer qu'il est correct.
  2. Dans l'explorateur de dossiers, cliquez dessus avec le bouton droit de la souris et sélectionnez "Extraire ici".
  3. Entrez le dossier extrait (ex: "rsync-3.1.3")
  4. Cliquez avec le bouton droit de la souris sur l’écran de votre gestionnaire de dossiers et accédez à "Ouvrir dans un terminal". Vous pouvez également effectuer les étapes 2 à 4 manuellement sur la ligne de commande. En fin de compte, vous devez simplement être cdname__ed dans ce répertoire extrait contenant le code source rsyncname__.
  5. Vérifiez la version actuelle de rsyncname__. Notez-le pour que vous puissiez voir plus tard qu'il a été mis à jour.

    rsync --version
    
  6. Installez les outils nécessaires:

    Sudo apt update
    Sudo apt install yodl
    
  7. Construire:

    ./configure
    make
    Sudo make install
    
  8. 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.
    
  9. 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 npour 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.)

Références partielles:

  1. http://www.beginninglinux.com/home/backup/compile-rsync-from-source-on-ubunt
0
Gabriel Staples