Aus Gründen, auf die ich nicht eingehen möchte, muss ich Verzeichnisse kopieren, solange die durchschnittliche Systemlast niedrig ist. Kann mir jemand beim Schreiben eines BASH-Skripts helfen, das den Inhalt eines Verzeichnisses kopiert? Überprüfen Sie jedoch, ob die durchschnittliche Systemlast vor dem Kopieren der einzelnen Dateien unter X liegt, und warten Sie andernfalls Y Sekunden und versuchen Sie es erneut.
2
Antworten:
Können Sie einfach rsync oder einen beliebigen Kopierbefehl ausführen , den Sie verwenden möchten, kombiniert mit nice zum Festlegen der Prozessorpriorität und / oder ionice zum Festlegen der io-Priorität ?
quelle
Es gibt eine Option
rsync
, die die E / A-Bandbreite begrenzt:quelle
Nur zum Spaß (und ja, ich weiß, dass es nicht versucht, die Datei erneut zu kopieren, falls sie in den Ruhemodus wechselt. Ich werde dies zu Ihrer eigenen Unterhaltung belassen. Wenn Sie über "$ @" gehen, fällt Ihnen das + Verschieben ein ):
Wenn Sie den Last-Durchschnitt der letzten Minute verwenden und nur dann kopieren, wenn das System zu 85% im Leerlauf ist, wird etwas getan.
auf jeden fall würde ich nur rsync mit throtteling (wie dennis erwähnt) verwenden und dem rsync-prozess (wie zoredache erwähnt) einen hohen netten wert (gleichbedeutend mit niedriger priorität) zuweisen und das os die zeitplanung ausführen lassen (was genau darauf ausgelegt ist) ).
quelle