Wie kann ich den Übertragungsfortschritt und die Geschwindigkeit beim Kopieren von Dateien mit cp anzeigen?


Zur akzeptierten Antwort gehen


Andernfalls gibt es ein alternatives Befehlszeilendienstprogramm, mit dem dies erreicht werden kann?


335





2010-12-14




Anzahl der Antworten: 18


Während cp hat diese Funktionalität nicht erhalten haben, können Sie verwenden , um pv dies zu tun:

 pv my_big_file > backup/my_big_file
 

Hinweis: Bei dieser Methode gehen die Berechtigungen und der Besitz der Datei verloren. Auf diese Weise kopierte Dateien haben die gleichen Berechtigungen, als hätten Sie sie selbst erstellt und gehören Ihnen.

In diesem Beispiel wird pv die Datei im Grunde nur an stdout * ausgegeben, das Sie mit dem > Operator in eine Datei umleiten . Gleichzeitig werden dabei Informationen über den Fortschritt an das Terminal gesendet.

So sieht es aus:

 [email protected]:~/Data$ pv my_big_file > backup/my_big_file
 138MB 0:00:01 [73.3MB/s] [=================================>] 100% 
 

Möglicherweise müssen


 Sie pv
sudo apt-get install pv auf Ihrem System installieren (alternativ eingeben ).


*: Das technische Bit

In einem Unix-ähnlichen System gibt es drei wichtige Datenströme: stdout (Standardausgabe), stderr (Standardfehler) und stdin (Standardeingabe). Jedes Programm hat sozusagen alle drei. Der > Umleitungsoperator leitet die Programmausgabe in eine Datei um. Wie Sie oben sehen, wird > die Standardausgabe eines Programms ohne Argumente in eine Datei umgeleitet . cp Im Grunde nichts schicker als

 cat source > destination
 

(Wo cat liest gerade eine Datei und druckt es auf stdout). pv ist wie cat, aber wenn Sie den Ausgabestream an eine andere Stelle umleiten, werden stattdessen Fortschrittsinformationen an stdout ausgegeben.

Schauen Sie sich um man pv , um mehr darüber zu erfahren.


Eine andere Möglichkeit, wie
Alt-Text

DoR
in dieser Antwort vorschlägt , besteht darin, stattdessen rsync zu verwenden:

 $ rsync -ah --progress source-file destination-file
sending incremental file list
source-file
        621.22M  57%  283.86MB/s    0:00:01
 

Dadurch werden die Dateiberechtigungen / -eigentum beibehalten, während der Fortschritt angezeigt wird.


256


2010-12-14

Gibt es nicht Sehen Sie hier , warum. Obwohl es mehr tut, als Sie brauchen, rsync hat es einen --progress Parameter. Sie -a behalten Berechtigungen usw. und -h sind für den Menschen lesbar.

 rsync -ah --progress source destination
 

Die Ausgabe sieht ungefähr so ​​aus:

 Pictures/1.jpg
      2.13M 100%    2.28MB/s    0:00:00 (xfr#5898, to-chk=1/5905)
Pictures/2.jpg
      1.68M 100%    1.76MB/s    0:00:00 (xfr#5899, to-chk=0/5905)
 

194


2012-10-15

Wenn Sie sehen möchten, ob Ihre Dateien übertragen korrekt könnten Sie gcp und gcp ist wie cp aber standardmäßig gibt Ihnen einen Fortschrittsbalken , so dass Sie sehen können , was kopiert wird. Wie das Programm im Wiki mitteilt , gcp verfügt es über mehrere nützliche Funktionen wie z

  • Übertragungsfortschrittsanzeige
  • kontinuierliches Kopieren bei Fehler (zur nächsten Datei springen)
  • Protokollierung des Kopierstatus: gcp protokolliert alle Aktionen, damit Sie wissen, welche Dateien erfolgreich kopiert wurden
  • Namensmanipulation zur Behebung von Einschränkungen des Zieldateisystems (z. B. Löschen von nicht kompatiblen Zeichen "*" oder "?" auf FAT)

Selbst wenn der Fortschrittsbalken bei Verwendung des Tools 100% erreicht hat, müssen Sie warten, bis die Eingabeaufforderung Ihres Terminals erneut angezeigt wird, bevor Sie Ihre Medien sicher entfernen, damit Sie sicherstellen können, dass der Übertragungsprozess erfolgreich abgeschlossen wurde.

gcp wird zum Kopieren von Dateien verwendet und verfügt über Optionen, mit --preserve denen verschiedene Attribute und Berechtigungen beibehalten und --recursive ganze Verzeichnisse kopiert werden können. Weitere Informationen zu den Optionen erhalten Sie, indem Sie man gcp die Online-Hilfeseiten von Ubuntu aufrufen oder diese aufrufen . Ein Tutorial ist auch auf dieser Site verfügbar .

Installieren Sie gcp aus den Repositories mit

 sudo apt-get install gcp
 

( Hinweis : In Ubuntu 12.10 ist der neue Automount-Punkt beispielsweise /media/user/usbdisk )

Sie können eine Datei auf Ihr Medium kopieren, indem Sie eingeben

 gcp /home/mike/file.mp4 /media/usb
 

und kopieren Sie einen Ordner auf Ihr Medium mit

 gcp -rv ~/Podcasts /media/Mik2
 

Beispielausgabe gcp mit dem Fortschrittsbalken:

 gcp ~/Videos_incIplayer/mars.flv /media/Mik2
Copying 168.57 MiB 100% |########################################################|   7.98 M/s Time: 00:00:22
 

Sie können natürlich mehrere Dateien oder Ordner angeben, die auf Ihre Festplatte kopiert werden sollen, und es gibt viele andere Optionen, die in behandelt werden man gcp .


89


2012-10-15

Die Verwendung von cURL für genau diesen Zweck macht mir Spaß. Die Manpage listet das "FILE" -Protokoll als unterstützt auf. Verwenden Sie es also wie jedes andere Protokoll in einer URL:

 curl -o destination FILE://source
 

Geschwindigkeit, Fortschritt, verbleibende Zeit und mehr - alles in einem vertrauten Format.


69


2013-02-02

Während die Geschwindigkeit nicht angezeigt wird, werden beim Kopieren mehrerer Dateien über die -v Option zum cp Befehl Statusinformationen angezeigt . z.B

 cp -rv old-directory new-directory
 

28


2010-12-14

progress In den Repositorys gibt es ein Tool, mit dem verschiedene Befehle überprüft und deren Fortschrittsinformationen angezeigt werden können.

Installieren Sie es mit dem Befehl

 sudo apt-get install progress
 

Dieses Tool kann folgendermaßen verwendet werden:

 cp bigfile newfile & progress -mp $!
 

Ausgabe:

 [11471] cp /media/Backup/Downloads/FILENAME.file 
        29.9% (24.2 MiB / 16 MiB)
 

21


2016-09-26

Der Kernel kennt die meisten Daten wie die Geschwindigkeit und oft auch den Prozentsatz. Moderne Kernel stellen dies über ihr / proc-Dateisystem zur Verfügung.

showspeed von https://github.com/jnweiger/showspeed verwendet diese Informationen. Es kann an bereits laufende Programme angehängt werden und regelmäßige Aktualisierungen wie folgt durchführen:

 $ dd if=bigfile of=/tmp/otherbigfile &
$ showspeed dd
dd looks like a process name. pid=4417 matches av0=dd.
p/4417/fd/0r /home/jw/bigfile 113MB/s (12%, 2.3GB)  9m:35
p/4417/fd/1w /tmp/otherbigfile 182MB/s (2.6GB)
p/4417/fd/0r /home/jw/bigfile 285MB/s (15%, 3.0GB)  8m:08
p/4417/fd/0r /home/jw/bigfile 115MB/s (16%, 3.2GB)  8m:01
p/4417/fd/0r /home/jw/bigfile 107MB/s (17%, 3.4GB)  7m:39
p/4417/fd/1w /tmp/otherbigfile 104MB/s (3.5GB)
p/4417/fd/0r /home/jw/bigfile 139MB/s (19%, 3.7GB)  7m:37
p/4417/fd/0r /home/jw/bigfile 116MB/s (20%, 3.9GB)  7m:18
p/4417/fd/1w /tmp/otherbigfile  67MB/s (4.0GB)
p/4417/fd/1w /tmp/otherbigfile 100MB/s (4.1GB)
...
 

20


2014-02-25

Während pv mit lokalen umgehen cp Aufgaben, indem dd mit pv Dosen Deal mit sowohl lokalen ( cp ) und Remote ( scp ) Aufgaben.

 dd if=path/to/source.mkv | pv | dd of=path/to/dest.mkv
 

Bitte stellen Sie die path/to/dest.mkv Ausgänge durch touch path/to/dest.mkv

Dies kann den Fortschritt anzeigen, aber wenn Sie die prozentualen Informationen möchten,

 dd if=path/to/source.mkv | pv -s 100M | dd of=path/to/dest.mkv
 

Ersetzen Sie 100M oben durch die tatsächliche Größe Ihrer Quelldatei.

Hier kommt der Remote-Teil

Während der scp aktuelle Fortschritt kaum zu erkennen ist, ist die Verwendung von dd with pv ein Kinderspiel.

 ssh [email protected] dd if=path/to/source.mkv | pv -s 100M | dd of=path/to/dest.mkv
 

13


2013-01-05

Es gibt ein neues Tool mit dem Namen cv, das alle mit einem laufenden Befehl verbundenen Deskriptoren findet und den Fortschritt und die Geschwindigkeit anzeigt : https://github.com/Xfennec/cv

 cv -w
 

gibt die Statistiken für alle laufenden Operationen cp, mv usw. aus


11


2014-07-13

Wie viele sagten, enthält cp diese Funktionalität nicht.

Nur um meine $ 0.02 zu werfen, was ich normalerweise mit trivialen Kopiersituationen mache (dh nein -R ):

  1. Sehen Sie, wie groß die Datei ist und merken Sie sich

  2. Beginnen Sie mit dem Kopieren

  3. Öffnen Sie ein anderes Terminal

  4. Führen Sie watch ls -lh DIR das Verzeichnis aus, in dem sich das Ziel befindet

Dadurch kann ich mit minimalem Aufwand über die Größe der Zieldatei auf dem Laufenden bleiben.

Als Alternative für weniger triviale Situationen, z. B. das rekursive Kopieren von Verzeichnissen, können Sie eine watch du -hs DIR Zusammenfassung der DIR-Größe anzeigen. Die Berechnung kann jedoch sehr lange dauern und das Kopieren sogar verlangsamen. Verwenden Sie daher möglicherweise -n INTERVAL Argumente, um zu überwachen, dass ein Kompromiss akzeptabel ist.

Update: Wenn Sie Platzhalter mit dem Befehl watch du verwenden, z. B. watch du -hs backup/* vergessen Sie nicht, Folgendes anzugeben:

 watch "du -hs backup/*"
 

Andernfalls werden die Platzhalter nur einmal erweitert , wenn die Überwachung gestartet wird, sodass keine neuen Dateien / Unterverzeichnisse angezeigt werden.


9


2012-11-16

Wenn Sie über rsync 3.1 oder höher ( rsync --version ) verfügen , können Sie kopieren (cp -Rpn), während die Berechtigungen und der Besitz erhalten bleiben, Verzeichnisse wiederverwenden, "kein Datenverlust" und den Gesamtfortschritt (anstatt nur den Fortschritt nach Datei), die Kopierrate und ( sehr grob) geschätzte verbleibende Zeit mit:

 sudo rsync -a --info=progress2 --no-i-r /source /destination
 

Beachten Sie, dass sudo nur benötigt wird, wenn Sie sich mit Verzeichnissen / Dateien befassen, die Sie nicht besitzen. Ohne das --no-i-r Symbol wird der Prozentsatz möglicherweise während des Kopiervorgangs auf einen niedrigeren Wert zurückgesetzt. Möglicherweise werden spätere Versionen von rsync standardmäßig no-ir mit info = progress2 verwenden, dies ist jedoch in der aktuellen Version von 3.1.2 nicht der Fall.

Ich habe festgestellt, dass der Prozentsatz und die verbleibende Zeit stark überschätzt werden, wenn in ein Verzeichnis kopiert wird, das bereits Dateien enthält (z. B. wenn Sie normalerweise cp -n "no clobber" verwenden würden).


7


2016-03-02

dd status=progress

Option in GNU Coreutils 8.24+ (Ubuntu 16.04) hinzugefügt:

 dd if=src of=dst status=progress
 

Das Terminal zeigt eine Zeile des Typs:

 462858752 bytes (463 MB, 441 MiB) copied, 38 s, 12,2 MB/s
 

Siehe auch: Wie können Sie den Fortschritt von dd überwachen?


7



Je nachdem, was Sie tun möchten, könnte Midnight Commander ( mc ) die Antwort sein. Ich bin überrascht, dass es noch nicht erwähnt wurde.

Tools wie pv oder rsync eignen sich gut, um den Fortschritt der Übertragung einer großen Datei anzuzeigen, aber wenn es darum geht, ganze Verzeichnisse / Bäume zu kopieren, mc berechnet sie die Größe und zeigt dann den Fortschritt sehr gut an. Außerdem ist es auf den meisten Systemen sofort verfügbar.


4


2016-01-30

Verwenden Sie ein Shell-Skript:

 #!/bin/sh
cp_p()
{
   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
}
 

Das wird so aussehen:

 % cp_p /home/echox/foo.dat /home/echox/bar.dat
66% [===============================>                      ]
 

Quelle


3


2014-09-01

Eine weitere Option zum Beibehalten von Attributen könnte sein (wenn source es sich um einen Ordner handelt, in dem er erstellt wird destination ).

 tar -c source | pv -e -t -p -r | tar -C destination  -x
 

hoffe, es kann jemandem nützlich sein. Um eine geschätzte Übertragungszeit zu erhalten, kann dies erreicht werden, indem dies do -s source im Voraus durchgeführt und als -s <size> Parameter an übergeben wird pv .


1


2018-10-17

Sie können jedes Programm kopieren. Gleichzeitig können sudo iotop Sie die tatsächliche Lese- / Schreibgeschwindigkeit der Festplatte noch ohne Fortschritt anzeigen.


0


2018-01-11

Überprüfen Sie den Quellcode für progress_bar im folgenden Git-Repository

https://github.com/Kiran-Bose/supreme

Probieren Sie auch das Custom Bash Script Package Supreme aus

Laden Sie die Deb-Datei herunter und installieren Sie sie in einer Debian-basierten Distribution oder laden Sie die Quelldateien herunter, ändern Sie sie und verwenden Sie sie für andere Distributionen

Funktionsübersicht

(1) Öffnen Sie Apps ---- Firefox ---- Rechner ---- Einstellungen

(2) Dateien verwalten ---- Suchen ---- Navigieren ---- Schnellzugriff

             |----Select File(s)
            |----Inverse Selection
            |----Make directory
            |----Make file
                                          |----Open
                                          |----Copy
                                          |----Move
                                          |----Delete
                                          |----Rename
                                          |----Send to Device
                                          |----Properties
 

(3) Verwalten des Telefons ---- Verschieben / Kopieren vom Telefon ---- Verschieben / Kopieren zum Telefon ---- Synchronisieren von Ordnern

(4) USB verwalten ---- Von USB verschieben / kopieren ---- Auf USB verschieben / kopieren


0


2018-09-10

pv weiß, wie man Dateideskriptoren überwacht, denen eine pid gegeben wurde, egal ob es sich um cp oder etwas anderes handelt

Aus der Dokumentation:

    (Linux only): Watching file descriptor 3 opened by another process 1234:

          pv -d 1234:3

   (Linux only): Watching all file descriptors used by process 1234:

          pv -d 1234
 

Beispiel:

 md5sum file &
[1] + 1271 suspended
pv -d 1271
417MiB 0:00:17 [12,1MiB/s] [============>                                 ] 29% ETA 0:00:53

$ cp file.mov copy.mov &
[2] 3731
$ pv -d 3731
3:/media/windows/file.mov:  754MiB 0:00:04 [97,2MiB/s] [======================>                       ] 52% ETA 0:00:07
4:/media/windows/copy.mov:  754MiB 0:00:04 [97,3MiB/s] [     <=>                                                                   ] 
 

0


2019-02-06