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

31

J'utilise Ubuntu 12.04 comme référentiel et je souhaite afficher une barre de progression lors de l'utilisation à rsyncpartir de la ligne de commande. J'ai essayé l'option suggérée dans cet article ( -P), mais je préfère voir une barre de progression et ne pas utiliser Grsync. J'utilise rsync -P source destactuellement.

Joseph Smith
la source
J'apprécie la réponse rapide. J'ai hâte de faire des recherches à ce sujet.
Joseph Smith
C'était un bon début mais j'ai besoin de savoir comment faire la mise à jour de la barre de progression pendant que rsync fonctionne. Un ami a dit que je devais implémenter la taille du serveur et implémenter une commande watch avec pipe.
Joseph Smith
Il y a une réponse :)
AB

Réponses:

7

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

    É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
UN B
la source
1
@JosephSmith Êtes-vous satisfait de ma réponse? Donnez-moi ensuite un vote positif (∧). Si je pouvais résoudre votre problème, ce serait bien que vous marquiez ma réponse (✓). ;)
AB
J'ai accepté cela il y a quelques jours avec un grand sourire. Je viens tout juste de ne pas le sélectionner et de l'accepter à nouveau. Je ne pense pas pouvoir voter, car je n'ai pas assez de crédit. Merci pour l'aide btw.
Joseph Smith
Des idées pourquoi j'obtiens une erreur, aucun fichier ou répertoire trouvé? La commande que j'exécute est: root @ cto: / repo / ubuntu # rsync "$ rsync_param" -a --prune-empty-dirs --exclude "* .iso" archive.ubuntu.com/ubuntu/indices/ / repo / ubuntu / indices | pv -lep -s $ (rsync "$ rsync_param" n archive.ubuntu.com/indices/ / repo / ubuntu / indices | awk 'NF' | wc -l)
Joseph Smith
1
"$rsync_param"nest assez étrange; les guillemets signifient qu'il ne peut fonctionner que sur des options sans espaces, et attacher le nà la fin signifie qu'il ne peut fonctionner qu'avec des options courtes. Beaucoup plus clair et plus facile est tout simplement $rsync_param -n, qui spécifie le fonctionnement à sec sans se fier au format de rsync_param, et en ne le citant pas, de longues options pourraient également être incluses
Izkata
A travaillé la première fois, sauf qu'il n'affiche pas de taux de transfert
Ciasto piekarz
36

rsync a une --infooption qui peut être utilisée non seulement pour afficher la progression actuelle, mais aussi le taux de transfert et le temps écoulé:

--info=FLAGS            fine-grained informational verbosity

L'explication sur la façon de l'utiliser se trouve sous l' -Poption 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 générés et mis à jour en continu:

18,757,542,664 100%   65.70MB/s    0:04:32 (xfr#1389, to-chk=0/1510)

Notez que lorsque le transfert démarre, le nombre total de morceaux, et donc la progression actuelle, peut changer lorsque l'option récursive est utilisée car plus de fichiers sont découverts pour la synchronisation

Jon
la source
16

Vous pouvez utiliser les paramètres --progresset --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
fugitif
la source
2
Cela a fonctionné pour moi sur macOS.
mangue
2

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)
Joseph Smith
la source
1

Si votre version de rsyncn'accepte pas l' --info=progress2option, vous pouvez utiliser tqdm:

À installer:

pip install tqdm

Utiliser:

$ rsync -av / source / dest | tqdm --unit_scale | wc -l
10,0Mit [00:02, 3,58Mit / s]
ostrokach
la source
0

Ouais, fais ce que Jon a dit : utilise l' --info=progress2option. Mais que dois-je 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 à rsyncpartir 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". Enregistrez-le dans un répertoire SANS ESPACES DU TOUT pour vous assurer qu'il se construit correctement.
  2. Dans votre explorateur de dossiers, faites un clic droit dessus et allez dans "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 accédez à «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édité dans ce répertoire extrait contenant le rsynccode source.
  5. Vérifiez la version actuelle de rsync. Prenez note de cela afin 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 désormais accès à l' --info=progress2option:

    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 que vous recherchez:

    Il existe également une --info=progress2option qui génère des statistiques basées sur l'ensemble du transfert, plutôt que sur des fichiers individuels. Utilisez cet indicateur sans sortir un nom de fichier (par exemple, évitez -vou spécifiez --info=name0) si vous voulez voir 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' --progressoption pour l'utiliser --info=progress2.)

Voir également: "Comment utiliser rsync", par Gabriel Staples: /superuser/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
Gabriel Staples
la source