Andernfalls gibt es ein alternatives Befehlszeilendienstprogramm, mit dem dies erreicht werden kann?
quelle
Andernfalls gibt es ein alternatives Befehlszeilendienstprogramm, mit dem dies erreicht werden kann?
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:
stefano@ubuntu:~/Data$ pv my_big_file > backup/my_big_file
138MB 0:00:01 [73.3MB/s] [=================================>] 100%
Möglicherweise müssen Sie pvsudo 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 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 bleiben die Dateiberechtigungen / -eigentümer erhalten, während der Fortschritt angezeigt wird.
pv
es behandelt Berechtigungen nicht so wiecp
... (basierend auf einem kurzen Test, den ich ausprobiert habe:pv
habe das Ausführungsbit nicht über ... kopiertrsync
.alias cp="rsync -avz"
cp ist veraltet.pv
, kannst du einschnüffeln/proc/PID of cp/fd
und/proc/PID of cp/fdinfo
den Fortschritt herausfinden. (Es liegt an Ihnen, die Geschwindigkeit abzuleiten.) Ich benutze diese Technik, um zu beobachtenupdatedb
.-z
sollte wahrscheinlich nur für Netzwerkkopien verwendet werden. Das Komprimieren und Dekomprimieren der Daten für eine lokale Kopie ist ein reiner Aufwand.rsync
, achten Sie darauf, dass Sie dem Quellpfad kein Trailing hinzufügen/
(oder es entfernen, wenn zB die Bash-Vervollständigung es automatisch dort ablegt). Andernfalls erhalten Sie andere Ergebnisse als bei Verwendung voncp
(odergcp
).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.Die Ausgabe sieht ungefähr so aus:
quelle
-r
Flag zum Wiederverwenden von Verzeichnissen. Es kann sogar als direkter Ersatz für cpalias cp="rsync -ah --progress"
--progress
dreht sich mein Kopf - ich beobachte die gesamte Ausgabe im Terminal. Diejenigen, die hier von der AOL-Schlüsselwortsuche kommen,rsync -ah --info=progress2 [source] [destination]
präsentieren die Ausgabe meiner Meinung nach ein wenig vernünftiger.Wenn Sie sehen möchten, ob Ihre Dateien übertragen korrekt könnten Sie
gcp
undgcp
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 zSelbst 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 Übertragungsvorgang 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 Sieman 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( 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
und kopieren Sie einen Ordner auf Ihr Medium mit
Beispielausgabe
gcp
mit dem Fortschrittsbalken: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
.quelle
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NotSupported: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
export DISPLAY=:0.0
vor dem Starten von gcp einstellen. Wenn die Maschine kopflos ist, müssen Sie eine xsession in einem virtuellen Framebuffer starten oder so, an diesem Punkt sollten Sie wahrscheinlich nur nach einem anderen Programm suchengcp
ist ziemlich anständig, aber die DBUS / X-Anforderung ist ungerade. Ich habe das über SSH erledigt, indem ich ssh forwarding verwendet habe:ssh -X user@host
und das erlaubte mir, es auszuführen.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:
Geschwindigkeit, Fortschritt, verbleibende Zeit und mehr - alles in einem vertrauten Format.
quelle
pv
, dass es Berechtigungen nicht retten wird.Während die Geschwindigkeit nicht angezeigt wird, werden beim Kopieren mehrerer Dateien über die
-v
Option zumcp
Befehl Statusinformationen angezeigt . z.Bquelle
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:
quelle
pkill -USR1 dd
, umdd
dessen Status anzuzeigen. Eine andere Option bestehtwatch -n 1 pkill -USR1 dd
darin, den Fortschritt regelmäßig (jede Sekunde) anzuzeigen.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
Dieses Tool kann folgendermaßen verwendet werden:
Ausgabe:
quelle
Während
pv
mit lokalen umgehencp
Aufgaben, mitdd
mitpv
mit lokalen umgehen kann (cp
) und Remote (scp
) Aufgaben.Bitte stellen Sie die
path/to/dest.mkv
Ausgänge durchtouch path/to/dest.mkv
Dies kann den Fortschritt anzeigen, aber wenn Sie die prozentualen Informationen möchten,
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 vondd
withpv
ein Kinderspiel.quelle
dd
hatstatus=progress
: askubuntu.com/a/824895/52975Es gibt ein neues Tool namens "cv", mit dem Sie alle Deskriptoren finden können, die sich auf einen ausgeführten Befehl beziehen und den Fortschritt und die Geschwindigkeit anzeigen können: https://github.com/Xfennec/cv
gibt die Statistiken für alle laufenden Operationen cp, mv usw. aus
quelle
watch cv -q
ist noch ordentlichercp
ein Verzeichnis rekursiv kopiert wird oder nicht.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
):Sehen Sie, wie groß die Datei ist und merken Sie sich
Beginnen Sie mit dem Kopieren
Öffnen Sie ein anderes Terminal
Führen Sie
watch ls -lh DIR
das Verzeichnis aus, in dem sich das Ziel befindetDadurch 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,
watch du -hs backup/*
vergessen Sie zB nicht, Folgendes anzugeben:Andernfalls werden die Platzhalter nur einmal erweitert , wenn die Überwachung gestartet wird, sodass keine neuen Dateien / Unterverzeichnisse angezeigt werden.
quelle
dd status=progress
Option in GNU Coreutils 8.24+ (Ubuntu 16.04) hinzugefügt:
Das Terminal zeigt eine Zeile des Typs:
Siehe auch: Wie können Sie den Fortschritt von dd überwachen?
quelle
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: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 wird in späteren Versionen von rsync standardmäßig no-ir mit info = progress2 verwendet, 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).
quelle
Verwenden Sie ein Shell-Skript:
Das wird so aussehen:
Quelle
quelle
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
oderrsync
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.quelle
Eine weitere Option zum Beibehalten von Attributen könnte sein (wenn
source
es sich um einen Ordner handelt, in dem er erstellt wirddestination
).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 wirdpv
.quelle
-f -
ist überflüssig.tar
Die Standardausgabe fürc
und die Standardeingabe fürx
sind stdout und stdin.Sie können jedes Programm kopieren. Gleichzeitig können
sudo iotop
Sie die tatsächliche Lese- / Schreibgeschwindigkeit der Festplatte noch ohne Fortschritt anzeigen.quelle
Ü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
(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
quelle
pv weiß, wie man Dateideskriptoren überwacht, denen eine pid gegeben wurde, egal ob es sich um cp oder etwas anderes handelt
Aus der Dokumentation:
Beispiel:
quelle