GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Schätzen Sie die verbleibende Zeit oder Arbeit bis zum Abschluss von Rsync?

Beim Ausführen von rsync Können wir in einem Verzeichnis mit vielen Dateien und Verzeichnissen auf mehreren Ebenen den Arbeitsaufwand oder die Zeit bis zur Fertigstellung abschätzen?

  • Die Fortschrittsoption zeigt nur den Fortschritt der Übertragung einer einzelnen Datei, nicht den Fortschritt der Übertragung aller Dateien und Verzeichnisse unter dem Quellverzeichnis.

  • Ich schätze, eine Möglichkeit ist, sich anzusehen, welche Verzeichnisse bisher
    übertragen wurden, und diese mit der Quelle zu vergleichen.

    Es hilft sehr, wenn ich die Reihenfolge der Dateien und Verzeichnisse kenne, in
    welchem ​​rsync überträgt sie.

    Ich vermute, dass es mit diesem rsync zusammenhängt Läuft mehrere Threads und was macht jeder Thread?

    Ich bin mir nicht sicher, welche Reihenfolge es wählt, und meine vorherige Vermutung der Brot-zuerst-Reihenfolge scheint nicht korrekt zu sein (also streiche ich es durch).

Akzeptierte Antwort:

Sie können rsync machen eine Zeile pro Datei mit -i ausgeben und verwenden Sie dann pv -l um den Fortschritt basierend auf der Zeilenanzahl (tatsächliche Dateianzahl) zu melden.

Sie benötigen pv (Pipe-Viewer):http://www.ivarch.com/programs/pv.shtml

rsync -ai sourcedir/ targetdir/ | pv -l -s filecount > logfile

Verwenden Sie den folgenden Befehl, um die Dateianzahl abzurufen:

find sourcedir | wc -l

Hinweis:Dieser Befehl zeigt Fortschrittsinformationen basierend auf der Anzahl der kopierten Dateien an. Dies funktioniert am besten, wenn es viele kleinere Dateien gibt. Wenn es nur wenige Dateien sind, die riesig sind, wirst du nicht viel Spaß haben.

So sehen Sie den Fortschritt beim Aktualisieren (oder Vergleichen) einer vorhandenen Kopie:

(mehr Informationen:Verzeichnisse vergleichen, aber nicht Inhalt von Dateien)

rsync -aii --delete sourcedir/ targetdir/ | pv -l -s filecount > logfile

Das zweite -i lässt rsync eine Zeile pro Datei drucken, selbst wenn sie gleich sind.

Fügen Sie -n hinzu zu vergleichen (nichts zu kopieren oder zu löschen).

Lassen Sie --delete weg nach Bedarf.

Dieser Befehl gibt die unterschiedlichen Dateien in Echtzeit auf dem Bildschirm aus:

rsync -aii --delete sourcedir/ targetdir/ | pv -l -s filecount | 
    tee logfile | grep -v "^."

Die obigen Befehle funktionieren am besten, wenn viele kleine Dateien vorhanden sind. Wenn Sie nur wenige große Dateien haben, können einige der in rsync integrierten Fortschrittsberichte hilfreicher sein. Siehe die rsync-Manpage für -P oder --progress oder --info=progress2 . Aber Vorsicht:Diese Optionen funktionieren nicht gut mit pv . Oder zumindest habe ich nicht herausgefunden wie.

Verwandte:Benötigen Sie jQuery-Tabs-Einschränkungen, die mit mvc5-Controller auf einer Registerkarte zu einem Statuszeitpunkt aktiv sind?

Hier ist eine grobe Problemumgehung, um den Fortschritt basierend auf der Größe zu sehen:

  • Achten Sie auf den freien Speicherplatz der Zielpartition, bevor Sie mit df -h kopieren .
  • Notieren Sie die Größe des Quellverzeichnisses mit du -sh .
  • benutze watch df -h und beobachten Sie, wie die Größe wächst.

Das funktioniert natürlich nur beim Kopieren und nicht beim Aktualisieren oder Vergleichen.


Linux
  1. Umask für Sshfs-gemountetes Dateisystem festlegen?

  2. Wie kann man Rsync anweisen, den Zeitstempel für Dateien beizubehalten, wenn der Quellbaum einen Einhängepunkt hat?

  3. Sichern Sie Ihre Dateien mit rsync

  4. Verwenden von rsync zum Synchronisieren von Dateien

  5. Linux-Äquivalent zu Robocopy?

ls-Befehl in Linux zum Auflisten von Dateien

Rsync-Beispiele zum Übertragen von Dateien unter Linux

Wie funktionieren Dateiberechtigungen für den Root-Benutzer?

Warum funktioniert find -mtime bei Dateien mit unterschiedlichen Zeitzonen nicht wie erwartet?

Lassen Sie einen Cronjob warten, bis der vorherige Rsync-Job beendet ist

Gibt es einen anderen Grund dafür, dass auf dem Gerät kein Speicherplatz mehr vorhanden ist?