70 votes

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

J'utilise Ubuntu 12.04 comme référentiel et j'aimerais afficher une barre de progression lors de l'utilisation de la fonction 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 rsync -P source dest actuellement.

88voto

Jon Points 981

Rsync dispose d'un --info qui peut être utilisée pour afficher non seulement la progression actuelle, mais aussi le taux de transfert et le temps écoulé :

--info=FLAGS            fine-grained informational verbosity

L'explication de son utilisation se trouve sous la rubrique -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  outputting  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 produits 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, car d'autres fichiers sont découverts pour la synchronisation.

34voto

fugitive Points 1066

Vous pouvez utiliser --progress y --stats paramètres.

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

13voto

A.B. Points 84870

Que pensez-vous 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

    Évite la double saisie des 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

3voto

Gabriel Staples Points 5149

Ouais, fais ce que Jon a dit : utiliser le --info=progress2 option. Mais, que dois-je faire si ma version de rsync est trop ancienne et ne supporte pas cette option ? Réponse : mettez à jour rsync !

Voici comment construire rsync à partir des sources 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". Sauvegardez-le dans un répertoire SANS AUCUN ESPACE pour vous assurer qu'il se construit correctement.

  2. Dans votre explorateur de dossiers, cliquez avec le bouton droit de la souris et choisissez "Extraire ici".

  3. Entrez le dossier extrait (ex : "rsync-3.1.3")

  4. Faites un clic droit sur l'écran dans votre gestionnaire de dossiers et choisissez "Ouvrir dans le terminal". Vous pouvez également effectuer les étapes 2 à 4 manuellement sur la ligne de commande. En fin de compte, il vous suffit d'être cd dans ce répertoire extrait contenant le rsync code source.

  5. Vérifiez la version actuelle de rsync . Notez-le afin de pouvoir voir plus tard s'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.
  1. Recherchez "progress2" dans les pages du manuel. Vous aurez maintenant accès au --info=progress2 option :

     man rsync

...puis appuyez sur / clé et type progress2 ; appuyez sur Enter pour le rechercher ; appuyez sur n pour la correspondance 'n'ext jusqu'à ce que vous trouviez l'entrée que vous recherchez :

Il existe également un --info=progress2 qui produit des statistiques basées sur l'ensemble du transfert, plutôt que sur des fichiers individuels. Utilisez ce drapeau sans sortir un nom de fichier (par exemple, éviter -v ou spécifier --info=name0 ) si vous voulez voir comment se déroule le transfert sans faire défiler l'écran avec un grand nombre de noms. (Vous n'avez pas besoin de spécifier l'option --progress afin d'utiliser l'option --info=progress2 .)

Voir aussi :

  1. [ma réponse] "Comment utiliser rsync" : https://superuser.com/questions/1271882/convert-ntfs-partition-to-ext4-how-to-copy-the-data/1464264#1464264

Références partielles :

  1. http://www.beginninglinux.com/home/backup/compile-rsync-from-source-on-ubuntu

2voto

Joseph Smith Points 723

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)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X