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?


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

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)


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!


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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.