Rsync affiche la progression d'un fichier individuel

21

J'utilise rsync pour télécharger / télécharger un fichier assez volumineux (20 Go). Je connais l'option --progress, mais ce qu'il fait dans mon cas, c'est simplement de me montrer le résultat à la fin.

Mon problème est que pendant une connexion instable - je ne sais pas si le téléchargement / téléchargement est en cours ou si quelque chose s'est mal passé. Existe-t-il un moyen d'afficher la barre de progression pour un fichier individuel? Quelque chose de similaire à ce que wget fait par défaut?

Merci!

Saumon
la source
4
J'utilise rsync depuis plus de 10 ans et je n'arrive pas à croire que je n'ai jamais posé cette question.
slm

Réponses:

17

C'est peut-être ce que vous recherchez.

% rsync -avvz --times --stats --checksum --human-readable --acls \
    --itemize-changes --progress \
    --out-format='[%t] [%i] (Last Modified: %M) (bytes: %-10l) %-100n' \
    /usr/include/glib-2.0 my-glib-copy/

Les commutateurs se décomposent comme suit:

  • -avvz = archive, verbeux x 2, compresser
  • --times = conserver les temps de modification
  • --stats = donne quelques statistiques de transfert de fichiers
  • --checksum = sauter en fonction de la somme de contrôle, pas du temps de modification et de la taille
  • - lisible par l'homme = numéros de sortie dans un format lisible par l'homme
  • --acls = conserve les ACL (implique -p)
  • --itemize-changes = afficher un résumé des modifications pour toutes les mises à jour
  • --progress = afficher la progression pendant le transfert
  • --out-format = '[% t] [% i] (Dernière modification:% M) (octets:% -10l)% -100n'
    • % t = date et heure actuelles
    • % i = une liste détaillée de ce qui est mis à jour
    • % M = heure de la dernière modification du fichier
    • % -10l = la longueur du fichier en octets (-10 est pour l'alignement et la précision)
    • % -100n = le nom du fichier (forme courte; "/" à la fin du répertoire) (-100 est pour l'alignement et la précision)

REMARQUE: consultez les pages de manuel pour rsyncet rsyncd.confpour plus de détails sur les commutateurs ci-dessus.

La commande ci-dessus produit la transcription suivante:

sending incremental file list
delta-transmission disabled for local transfer or --whole-file
[2012/12/23 21:34:46] [cd+++++++++] (Last Modified: 2010/12/19-08:13:31) (bytes: 4096      ) glib-2.0/
[2012/12/23 21:34:46] [>f+++++++++] (Last Modified: 2010/09/30-15:02:30) (bytes: 1511      ) glib-2.0/glib-object.h
       1.51K 100%    0.00kB/s    0:00:00
       1.51K 100%    0.00kB/s    0:00:00 (xfer#1, to-check=181/183)
[2012/12/23 21:34:46] [>f+++++++++] (Last Modified: 2010/09/30-15:02:30) (bytes: 2910      ) glib-2.0/glib.h
       2.91K 100%    2.78MB/s    0:00:00
       2.91K 100%    2.78MB/s    0:00:00 (xfer#2, to-check=180/183)
[2012/12/23 21:34:46] [>f+++++++++] (Last Modified: 2010/09/30-15:02:31) (bytes: 3613      ) glib-2.0/gmodule.h
       3.61K 100%    3.45MB/s    0:00:00
       3.61K 100%    3.45MB/s    0:00:00 (xfer#3, to-check=179/183)
...
...
[2012/12/23 21:34:46] [>f+++++++++] (Last Modified: 2010/09/30-15:02:31) (bytes: 8431      ) glib-2.0/gobject/gvaluecollector.h
       8.43K 100%  141.96kB/s    0:00:00
       8.43K 100%  141.96kB/s    0:00:00 (xfer#178, to-check=1/183)
[2012/12/23 21:34:46] [>f+++++++++] (Last Modified: 2010/09/30-15:02:31) (bytes: 8507      ) glib-2.0/gobject/gvaluetypes.h
       8.51K 100%  143.23kB/s    0:00:00
       8.51K 100%  143.23kB/s    0:00:00 (xfer#179, to-check=0/183)
total: matches=0  hash_hits=0  false_alarms=0 data=1305506

rsync[2996] (sender) heap statistics:
  arena:         540672   (bytes from sbrk)
  ordblks:            3   (chunks not in use)
  smblks:             7
  hblks:              2   (chunks from mmap)
  hblkhd:        401408   (bytes from mmap)
  allmem:        942080   (bytes from sbrk + mmap)
  usmblks:            0
  fsmblks:          592
  uordblks:      404784   (bytes used)
  fordblks:      135888   (bytes free)
  keepcost:      134240   (bytes in releasable chunk)

rsync[2999] (server receiver) heap statistics:
  arena:         286720   (bytes from sbrk)
  ordblks:            2   (chunks not in use)
  smblks:             8
  hblks:              3   (chunks from mmap)
  hblkhd:        667648   (bytes from mmap)
  allmem:        954368   (bytes from sbrk + mmap)
  usmblks:            0
  fsmblks:          672
  uordblks:      174480   (bytes used)
  fordblks:      112240   (bytes free)
  keepcost:      102352   (bytes in releasable chunk)

rsync[2998] (server generator) heap statistics:
  arena:         233472   (bytes from sbrk)
  ordblks:            4   (chunks not in use)
  smblks:             6
  hblks:              2   (chunks from mmap)
  hblkhd:        401408   (bytes from mmap)
  allmem:        634880   (bytes from sbrk + mmap)
  usmblks:            0
  fsmblks:          448
  uordblks:       83152   (bytes used)
  fordblks:      150320   (bytes free)
  keepcost:      131120   (bytes in releasable chunk)

Number of files: 183
Number of files transferred: 179
Total file size: 1.31M bytes
Total transferred file size: 1.31M bytes
Literal data: 1.31M bytes
Matched data: 0 bytes
File list size: 6.30K
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 350.39K
Total bytes received: 3.43K

sent 350.39K bytes  received 3.43K bytes  707.64K bytes/sec
total size is 1.31M  speedup is 3.69

Barre de progression dans les nouvelles versions de rsync?

Je suis tombé sur cette question SF:

L'une des réponses mentionnait que dans les versions plus récentes de rsyncil y avait maintenant le support d'une barre de progression. Cela ressemble à ceci:

% ./rsync -a --info=progress2 /usr .
    305,002,533  80%   65.69MB/s    0:00:01  xfr#1653, ir-chk=1593/3594)

Cette barre de progression n'affiche toujours pas l'état des fichiers individuels dans le transfert, mais elle montre un pourcentage du transfert global qui pourrait être utile.

slm
la source
1
Merci d'avoir répondu. Ce n'est toujours pas tout à fait ce que je recherche. Ce dont j'ai vraiment besoin, c'est lorsque vous téléchargez un fichier individuel (disons glib-2.0 / glib-object.h) - cela me montrerait une barre de progression pour ce fichier uniquement. Imaginez que glib-2.0 / glib-object.h soit 20 Go. Comment sauriez-vous s'il est toujours en cours de téléchargement et combien de temps il reste?
Salmon
6

rsync -vP travaille pour moi.

Depuis la page de manuel : "-P identique à --partial --progress"

Pradyumna
la source
1

Utilisez-vous rsync en mode démon? Le comportement par défaut de rsync (sur Debian 6) est celui que vous avez demandé. Cependant, je trouve dans la page de manuel de rsyncd.conf que le comportement par défaut en mode démon est:

transfert de journalisation
Ce paramètre permet la journalisation par fichier des téléchargements et des téléchargements dans un format quelque peu similaire à celui utilisé par les démons ftp. Le démon enregistre toujours le transfert à la fin, donc si un transfert est abandonné, aucune mention ne sera faite dans le fichier journal.
Si vous souhaitez personnaliser les lignes de journal, consultez le paramètre "format de journal".

Donc, si vous utilisez rsync en mode démon, il semble que vous devrez ajouter la ligne "transfert de journalisation" à rsyncd.conf.

jkim
la source
Non, je ne suis pas en mode démon et je ne vois pas la barre de progression pour chaque fichier, juste le résumé de l'ensemble du processus
Salmon