Wie kann ich beim Ausführen von rsync einen Fortschrittsbalken anzeigen?

31

Ich verwende Ubuntu 12.04 als Repo und möchte einen Fortschrittsbalken anzeigen, wenn ich es über rsyncdie Befehlszeile verwende. Ich habe die in diesem Artikel vorgeschlagene Option ( -P) ausprobiert , bevorzuge jedoch eine Fortschrittsanzeige und keine Verwendung von Grsync. Ich benutze rsync -P source destderzeit.

Joseph Smith
quelle
Hast du das gelesen? stackoverflow.com/questions/238073/…
AB
Ich schätze die schnelle Antwort. Ich freue mich darauf, dies zu erforschen.
Joseph Smith
Das war ein guter Anfang, aber ich muss wissen, wie ich die Fortschrittsanzeige aktualisieren kann, da rsync funktioniert. Ein Freund sagte, dass ich die Servergröße implementieren und einen Überwachungsbefehl mit Pipe implementieren muss.
Joseph Smith
Es gibt eine Antwort :)
AB

Antworten:

7

Wie wäre es damit?

rsync_param="-av"
rsync "$rsync_param" a/ b |\
     pv -lep -s $(rsync "$rsync_param"n a/ b | awk 'NF' | wc -l)
  • $rsync_param

    Vermeidet die doppelte Eingabe von Parametern

  • $(rsync "$rsync_param"n a/ b | awk 'NF' | wc -l)

    Bestimmt die Anzahl der auszuführenden Schritte.

  • a/ b

    1. a/ ist die Quelle
    2. b ist das Ziel
AB
quelle
1
@ JosephSmith Waren Sie mit meiner Antwort zufrieden? Dann gib mir eine Gegenstimme (∧). Wenn ich Ihr Problem lösen könnte, wäre es schön, wenn Sie meine Antwort markieren würden (✓). ;)
AB
Ich habe das vor ein paar Tagen mit einem breiten Lächeln akzeptiert. Ich habe es aber einfach wieder ausgewählt und akzeptiert. Ich glaube nicht, dass ich abstimmen kann, weil ich nicht genug Kredit habe. Danke für die Hilfe übrigens.
Joseph Smith
Irgendwelche Ideen, warum ich eine Fehlermeldung erhalte, keine Datei oder kein Verzeichnis gefunden? Der Befehl, den ich ausführe, lautet: root @ cto: / repo / ubuntu # rsync "$ rsync_param" -a --prune-empty-dirs --exclude "* .iso" archive.ubuntu.com/ubuntu/indices/ / repo / Ubuntu / Indizes pv -lep -s $ (rsync "$ rsync_param" n archive.ubuntu.com/indices//repo/ubuntu/indices | awk 'NF' | wc -l)
Joseph Smith
1
"$rsync_param"nist eher seltsam; Die Anführungszeichen bedeuten, dass nur Optionen ohne Leerzeichen bearbeitet werden können, und das Anhängen des nam Ende bedeutet, dass nur kurze Optionen bearbeitet werden können. Viel klarer und einfacher ist einfach $rsync_param -n, was Trockenlauf angibt, ohne sich auf das Format zu verlassen rsync_param, und wenn es nicht zitiert wird, könnten auch lange Optionen einbezogen werden
Izkata,
Hat das erste Mal funktioniert, außer dass festgestellt wird, dass die Übertragungsrate nicht angezeigt wird
Ciasto piekarz
36

rsync verfügt über eine --infoOption, mit der nicht nur der aktuelle Fortschritt, sondern auch die Übertragungsrate und die verstrichene Zeit ausgegeben werden können:

--info=FLAGS            fine-grained informational verbosity

Die Erklärung zur Verwendung finden Sie unter der -POption in der Manpage:

-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.)

Also folgendes:

rsync -r --info=progress2 --info=name0 "$src" "$dst"

Es werden folgende Ergebnisse ausgegeben und fortlaufend aktualisiert:

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

Beachten Sie, dass sich zu Beginn der Übertragung die Gesamtzahl der Blöcke und damit der aktuelle Fortschritt ändern kann, wenn die rekursive Option verwendet wird, wenn mehr Dateien für die Synchronisierung gefunden werden

Jon
quelle
16

Sie können --progressund --statsParameter verwenden.

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
Flüchtling
quelle
2
Das hat bei mir unter macOS geklappt.
Mango
2

Das hat endlich geklappt:

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
quelle
1

Wenn Ihre Version von rsyncdie --info=progress2Option nicht akzeptiert , können Sie Folgendes verwenden tqdm:

Installieren:

pip install tqdm

Benutzen:

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

Ja, mach was Jon gesagt hat : nutze die --info=progress2Option. Was kann ich tun, wenn meine Version von rsync zu alt ist und diese Option nicht unterstützt? Antwort: Rsync aktualisieren!

Hier erfahren Sie, wie Sie rsyncunter Ubuntu aus dem Quellcode erstellen

(getestet auf Ubuntu 16.04)

  1. Laden Sie die neueste Version von rsync herunter: https://download.samba.org/pub/rsync/src/ . Beispiel: "rsync-3.1.3.tar.gz". Speichern Sie es in einem Verzeichnis ohne Leerzeichen, um sicherzustellen, dass es richtig erstellt wird.
  2. Klicken Sie in Ihrem Ordner-Explorer mit der rechten Maustaste darauf und gehen Sie zu "Hier extrahieren".
  3. Geben Sie den extrahierten Ordner ein (Beispiel: "rsync-3.1.3")
  4. Klicken Sie mit der rechten Maustaste auf den Bildschirm in Ihrem Ordner-Manager und wählen Sie "In Terminal öffnen". Alternativ können Sie die Schritte 2 bis 4 auch manuell in der Befehlszeile ausführen. Letztendlich müssen Sie nur cdin dieses extrahierte Verzeichnis eingegeben werden, das den rsyncQuellcode enthält.
  5. Überprüfen Sie die aktuelle Version von rsync. Notieren Sie sich dies, damit Sie später sehen können, dass es tatsächlich aktualisiert wurde.

    rsync --version
    
  6. Installieren Sie die notwendigen Werkzeuge:

    sudo apt update
    sudo apt install yodl
    
  7. Bauen:

    ./configure
    make
    sudo make install
    
  8. Stellen Sie sicher, dass es aktualisiert wurde:

    rsync --version
    

    Beispielausgabe:

    $ 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. Durchsuchen Sie die Manpages nach "progress2". Sie haben jetzt Zugriff auf die --info=progress2Option:

    man rsync
    

    ... dann /Taste drücken und eingeben progress2; Drücken Sie die Eingabetaste, um danach zu suchen. Drücken Sie nfür die nächste Übereinstimmung, bis Sie den gewünschten Eintrag finden:

    Es gibt auch eine --info=progress2Option, die Statistiken basierend auf der gesamten Übertragung und nicht auf einzelnen Dateien ausgibt. Verwenden Sie dieses Flag, ohne einen Dateinamen auszugeben (z. B. zu vermeiden -voder anzugeben --info=name0), wenn Sie sehen möchten, wie die Übertragung abläuft, ohne den Bildschirm mit vielen Namen zu scrollen. (Sie müssen die --progressOption nicht angeben, um sie verwenden zu können --info=progress2.)

Siehe auch: "So verwenden Sie rsync" von Gabriel Staples: https://superuser.com/questions/1271882/convert-ntfs-partition-to-ext4-how-to-copy-the-data/1464264#1464264

Teilweise Referenzen:

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