Gibt es eine Methode, den Kopiervorgang unter Linux zu verlangsamen?
Ich habe eine große Datei, sagen wir 10 GB, und ich möchte sie in ein anderes Verzeichnis kopieren, aber ich möchte sie nicht mit voller Geschwindigkeit kopieren. Nehmen wir an, ich möchte es mit einer Geschwindigkeit von 1 MB/s kopieren, nicht schneller. Ich möchte einen Standard-Linux-cp
verwenden Befehl.
Ist das möglich? (Wenn ja, wie?)
Bearbeiten :Also, ich werde dem, was ich zu erreichen versuche, mehr Kontext hinzufügen.
Ich habe ein Problem auf dem ArchLinux-System, wenn ich große Dateien über USB (auf einen USB-Stick, eine USB-Festplatte usw.) kopiere. Nach dem Auffüllen des USB-Puffer-Cache reagiert mein System nicht mehr (sogar die Maus bleibt stehen; sie bewegt sich nur sporadisch). Der Kopiervorgang läuft noch, verbraucht aber 100% Ressourcen der Box. Wenn der Kopiervorgang abgeschlossen ist, läuft alles wieder normal – alles reagiert wieder perfekt.
Vielleicht ist es ein Hardwarefehler, ich weiß es nicht, aber ich weiß, dass ich zwei Computer mit diesem Problem habe (beide laufen auf ArchLinux, einer ist eine Desktop-Box, der zweite ist ein Laptop).
Die einfachste und schnellste „Lösung“ dafür (ich stimme zu, es ist nicht die „echte“ Lösung, nur ein hässlicher „Hack“) wäre, zu verhindern, dass sich dieser Puffer füllt, indem Sie die Datei mit einer durchschnittlichen Schreibgeschwindigkeit des USB-Laufwerks kopieren, z mir würde das reichen.
Akzeptierte Antwort:
Sie können eine Pipe mit pv -qL
drosseln (oder cstream -t
bietet ähnliche Funktionen)
tar -cf - . | pv -q -L 8192 | tar -C /your/usb -xvf -
-q
entfernt stderr-Fortschrittsberichte.
Das -L
Grenze ist in Byte.
Mehr über --rate-limit/-L
Flag vom man pv
:
-L RATE, --rate-limit RATE
Limit the transfer to a maximum of RATE bytes per second.
A suffix of "k", "m", "g", or "t" can be added to denote
kilobytes (*1024), megabytes, and so on.
Diese Antwort wies ursprünglich auf throttle
hin aber dieses Projekt ist nicht mehr verfügbar und ist daher aus einigen Paketsystemen herausgerutscht.