Ist es möglich, einen Fortschrittsbalken anzuzeigen, wenn Dateien mit cp in Terminal kopiert werden?
Ist es möglich, einen Fortschrittsbalken anzuzeigen, wenn Dateien mit cp in Terminal kopiert werden?
Antworten:
Sie können stattdessen rsync verwenden.
rsync --progress /copy/from /copy/to
rsync -P /copy/from /copy/to
wird rsync --partial --progress /copy/from /copy/to
der Fortschritt des Kopiervorgangs angezeigt und die Übertragung fortgesetzt, wenn die Verbindung unterbrochen wird.
-r
Flagge, damit Verzeichnisse nicht übersprungen werden
Während cp
, CtrlTzeigt den aktuellen Prozentsatz an (mindestens unter macOS)
Ctrl-t
sendet SIGINFO
Signale in der gleichen Weise, Ctrl-c
sendet SIGINT
Signale. Sie können z. B. eine Schleife in einer anderen Shell verwenden, um kill -INFO
den betreffenden Prozess wiederholt auszuführen, wenn Sie die Tasten nicht gedrückt halten möchten. Da es sich um ein Signal handelt, funktioniert es auch mit anderen Dienstprogrammen, z dd
. Ctrl-t
und SIGINFO
werden von BSD geerbt.
Wenn Sie große Dateien oder Verzeichnisse mit cp kopieren, können Sie 'Activity Monitor' öffnen, zur Registerkarte 'Disk' wechseln und nach dem Prozess 'cp' suchen. Hier können Sie nachverfolgen, wie viele Bytes seit dem letzten Start geschrieben wurden, um eine ungefähre Vorstellung vom Fortschritt zu erhalten. (OS X 10.10).
Hoffentlich hilft das!
#!/bin/sh
strace -q -ewrite cp -- "${1}" "${2}" 2>&1 \
| awk '{
count += $NF
if (count % 10 == 0) {
percent = count / total_size * 100
printf "%3d%% [", percent
for (i=0;i<=percent;i++)
printf "="
printf ">"
for (i=percent;i<100;i++)
printf " "
printf "]\r"
}
}
END { print "" }' total_size=$(stat -c '%s' "${1}") count=0
Es ist nicht perfekt, aber es funktioniert ... legen Sie es in einem Verzeichnispfad ab und nennen Sie es etwas Ähnliches.
strace
zu dem Zeitpunkt, als diese Antwort geschrieben wurde (Juli 2011), einen Befehl hatte, aber heute definitiv nicht.
rsync
stattdessen auch die Verwendung in Betracht ziehen .