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