Wird im Terminal ein Fortschrittsbalken angezeigt, wenn ich mit "cp" kopiere?

33

Ist es möglich, einen Fortschrittsbalken anzuzeigen, wenn Dateien mit cp in Terminal kopiert werden?

Daviesgeek
quelle
2
... Sie könnten rsyncstattdessen auch die Verwendung in Betracht ziehen .
Asmus
Gibt es eine Möglichkeit, dies mit einer allgemeinen Fortschrittsanzeige zu tun, ohne Tools von Drittanbietern zu installieren? Vielleicht ein Drehbuch oder so?
rraallvv

Antworten:

49

Sie können stattdessen rsync verwenden.

rsync --progress /copy/from /copy/to
Bahamat
quelle
1
Speedwise, was ist schneller, rsync oder cp?
Daviesgeek
Wenn am Zielort nicht alle zu kopierenden Dateien vorhanden sind, ist meines Erachtens kein Unterschied festzustellen. Wenn einige der Dateien im Ziel vorhanden sind, variiert dies, da rsync einige Überprüfungen vornimmt. Rsync ist in diesem Fall normalerweise (aber nicht immer) schneller.
Bahamat
2
Mit rsync -P /copy/from /copy/towird rsync --partial --progress /copy/from /copy/toder Fortschritt des Kopiervorgangs angezeigt und die Übertragung fortgesetzt, wenn die Verbindung unterbrochen wird.
gh0st
Und genau wie cp braucht es die -rFlagge, damit Verzeichnisse nicht übersprungen werden
Alexander - Monica
21

Während cp, CtrlTzeigt den aktuellen Prozentsatz an (mindestens unter macOS)

Vamos
quelle
das ist großartig!
felix021
1
Der Grund , dies funktioniert , ist , weil Ctrl-tsendet SIGINFOSignale in der gleichen Weise, Ctrl-csendet SIGINTSignale. Sie können z. B. eine Schleife in einer anderen Shell verwenden, um kill -INFOden 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-tund SIGINFOwerden von BSD geerbt.
HTNW
1

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!

Franz
quelle
0
#!/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.

Essobi
quelle
Warten Sie ... wie bekomme ich das zum Laufen ???
Daviesgeek
2
Ich kann mich nicht erinnern, ob OS X stracezu dem Zeitpunkt, als diese Antwort geschrieben wurde (Juli 2011), einen Befehl hatte, aber heute definitiv nicht.
Tim Ruddick
Irgendwelche Ideen, wie man das auf macOS laufen lässt?
Rraallvv