Frage Rsync zeigt den Fortschritt für einzelne Dateien an


Ich verwende Rsync, um eine ziemlich große Datei (20 GB) hochzuladen / herunterzuladen. Ich bin mir der --progress Option bewusst, aber was es in meinem Fall tut, zeigt mir nur das Ergebnis am Ende.

Mein Problem ist, dass während einer instabilen Verbindung - ich weiß nicht, ob es immer noch Download / Upload oder etwas schief gelaufen ist. Gibt es eine Möglichkeit, den Fortschrittsbalken für eine einzelne Datei anzuzeigen? Etwas ähnliches wie das, was wget standardmäßig tut?

Vielen Dank!


19
2017-12-23 21:39


Ursprung


Ich habe rsync seit 10+ Jahren verwendet und ich kann nicht glauben, dass ich diese Frage nie gestellt habe. - slm


Antworten:


Dies könnte sein, wonach Sie suchen.

% 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/

Die Schalter teilen sich wie folgt auf:

  • -avvz = archive, verbose x 2, komprimieren
  • --mal = Bearbeitungszeiten erhalten
  • --Statistiken = geben Sie einige Dateiübertragungsstatistiken an
  • --checksum = Überspringe basierend auf Prüfsummen, nicht auf Mod-Zeit und Größe
  • --für Menschen lesbar = Ausgabenummern in einem für Menschen lesbaren Format
  • --acl = ACLs beibehalten (impliziert -p)
  • --itemize-Änderungen = Ausgabe einer Änderungszusammenfassung für alle Aktualisierungen
  • --Fortschritt = Fortschritt während der Übertragung anzeigen
  • --out-Format= '[% t] [% i] (Zuletzt geändert:% M) (bytes:% -10l)% -100n'
    • % t = aktuelle Datumszeit
    • %ich = eine detaillierte Liste dessen, was aktualisiert wird
    • % M = die zuletzt geänderte Zeit der Datei
    • % -10l = die Länge der Datei in Bytes (-10 ist für Ausrichtung und Genauigkeit)
    • % -100n = der Dateiname (kurze Form; nachgestellte "/" auf dir) (-100 ist für Ausrichtung und Präzision)

HINWEIS: Siehe die Manpages für rsync und rsyncd.conf für vollständige Details zu den oben genannten Schaltern.

Der obige Befehl erzeugt das folgende Transkript:

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

Fortschrittsbalken in neueren Versionen von rsync?

Ich bin auf diese SF-Frage gestoßen:

Eine der Antworten erwähnt, dass in neueren Versionen von rsync Es gibt jetzt Unterstützung für einen Fortschrittsbalken. Es sieht aus wie das:

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

Dieser Fortschrittsbalken zeigt immer noch nicht den Status der einzelnen Dateien in der Übertragung, aber es zeigt einen Prozentsatz der Gesamtübertragung, die hilfreich sein könnte.


16
2017-12-24 02:46



Danke für die Antwort. Es ist immer noch nicht das, wonach ich suche. Was ich wirklich brauche ist, wenn Sie eine einzelne Datei herunterladen (sagen wir glib-2.0 / glib-object.h) - es würde mir einen Fortschrittsbalken anzeigen diese nur Datei. Stellen Sie sich vor, dass glib-2.0 / glib-object.h 20 GB groß ist. Woher willst du wissen, ob es noch heruntergeladen wird und wie viel Zeit noch übrig ist? - Salmon


rsync -vP funktioniert bei mir.

Von dem Man Seite: "-P wie --partial --progress"


5
2017-09-22 07:32





Verwenden Sie rsync im Daemon-Modus? Das Standardverhalten von rsync (unter Debian 6) ist, wie Sie es angefordert haben. Allerdings finde ich in der man-Seite für rsyncd.conf, dass das Standardverhalten im Daemon-Modus ist:

Protokollierung übertragen
                Dieser Parameter ermöglicht die Protokollierung von Downloads und Uploads in Dateien pro Datei                 ein Format, das dem von FTP-Daemons ähnelt. Der Daemon                 protokolliert die Übertragung immer am Ende, wenn also eine Übertragung abgebrochen wird, nein                 Erwähnung wird in der Protokolldatei gemacht.
Wenn Sie die Protokollzeilen anpassen möchten, lesen Sie den Parameter "Protokollformat".

Wenn Sie rsync im Daemon-Modus verwenden, müssen Sie die Zeile "Transfer Logging" in rsyncd.conf einfügen.


1
2017-12-24 02:21



Nein, ich bin nicht im Deamon-Modus und sehe den Fortschrittsbalken nicht jeder Datei, nur die Zusammenfassung für den gesamten Prozess - Salmon


Ich denke Pipe Viewer ist was du brauchst: https://code.google.com/p/pipeviewer/


0
2017-09-27 14:33