Ich muss ein sehr großes Verzeichnis kopieren (hier in Terabyte) und möchte den Fortschritt überwachen.
Ich fand das pv
ein nettes Dienstprogramm, aber wie kann ich es zum rekursiven Kopieren von Verzeichnissen verwenden? ( pv src > dst
funktioniert nicht, weil es sich um Verzeichnisse handelt)
PS: Läuft auf OS X Mountain Lion, pv
wurde von Mac-Ports installiert
Sie könnten
tar
oderpax
oder verwendencpio
:quelle
v
demtar
Befehl ein hinzufügen , um die Dateinamen anzuzeigen.tar cf -
gibt einen Stream mit den Dateien und ihren Metadaten aus, der über eine Pipe an pv weitergeleitet wird und den anderentar
beim Drucken einer Fortschrittsanzeige unberührt lässt. Der anderetar
Stream extrahiert die Daten in diesem Stream. Alle drei Befehle werden gleichzeitig ausgeführt und verarbeiten Daten, es wird nichts auf der Festplatte gespeichert, es wird nichts im Speicher gespeichert, außer den Pipe-Puffern und den internen Puffern der Befehle, die nur ein paar Kilobyte betragen.pv
kann nicht wissen, wie viele Daten zu übertragen sind. Wenn Sie einen Schätzwert für diesen Betrag haben, können Sie ihn mit der-s
Option weitergeben (GNUdu -sb src
würde Ihnen einen gutenTeer.
Beispiel:
quelle
Hier sind einige Befehle zum Kopieren von Verzeichnissen mit Fortschrittsinformationen.
Wenn es viele kleine Dateien gibt:
Dadurch wird der Fortschritt basierend auf der Anzahl der kopierten Dateien gemeldet.
Sie können weiterleiten,
/dev/null
wenn Sie nicht brauchenlogfile
.Verwenden Sie den folgenden Befehl, um Folgendes abzurufen
filecount
:Wenn es nur wenige große Dateien gibt:
Dies zeigt den Fortschritt basierend auf den kopierten Bytes an.
targetdir
muss existieren.Verwenden Sie den folgenden Befehl, um Folgendes abzurufen
size
:Wenn Sie rsync verwenden möchten:
Holen Sie sich
filecount
wie oben gezeigt.Wenn Sie auf demselben System kopieren,
rsync -a
ist dies praktisch dasselbe wiecp -a
. Die Vorteile von rsync liegen darin, dass Sie über das Netzwerk kopieren oder eine vorherige Kopie aktualisieren (oder vergleichen).Weitere Details finden Sie hier:
quelle
Sie können einen
du -b /directory/
Befehl sowohl für die Quelle als auch für das Ziel ausführen, während ein normaler Kopierbefehl ausgeführt wird, und die beiden vergleichen. Dies ist genauso effektiv und verlangsamt den Kopiervorgang nicht, indem er durch eine Pipe gedrückt wird.quelle
quelle