
Ich habe eine recht bescheidene Ubuntu-Box (Jaunty), die als kleiner Webserver läuft. Jede Nacht habe ich einen Cron-Job, der wichtige Verzeichnisse tarnt/gzippt und ein einfaches cp ausführt, um sie auf ein Backup-NAS-Laufwerk zu kopieren, das lokal per SMB gemountet wurde (tatsächlich ein „Offsite“-Backup).
Die Netzwerkverbindung zur Box ist 802.11G (54 Mbit/s), also natürlich ziemlich langsam, das Problem besteht jedoch darin, dass beim Kopieren der Dateien die drahtlose Bandbreite zwischen dem Webserver und dem Router durch den Kopiervorgang völlig ausgelastet ist und Webanforderungen entweder abgelehnt werden oder unglaublich langsam reagieren.
Ich habe versucht, den Kopiervorgang mit Trickle im Standalone-Modus zu drosseln, aber das hat anscheinend keinen Unterschied gemacht.
Hat jemand Vorschläge oder Ratschläge? Ich vermute, ich muss eine Art QoS auf dem Server ausführen, habe aber wirklich NFI. Hatte auf eine einfache, Patentlösung gehofft ;)
Danke, Xerxes
Antwort1
Da ist einwput
Dienstprogramm, das anders funktioniert als das bekannterewget
.
Damit können Sie Ihre Dateien mit einer kontrollierten Geschwindigkeit hochladen.
−−limit−rate=RATE
Wenn Sie nicht möchten, dass Wput die gesamte verfügbare Bandbreite verbraucht, geben Sie dieses Flag an. RATE ist ein numerischer Wert. Die Einheiten „K“ (für KiB) und „M“ (für MiB) werden verstanden. Die Upload-Rate ist im Durchschnitt begrenzt, d. h. wenn Sie die Rate auf 10 K begrenzen und Wput in den ersten Sekunden nur 5 K senden konnte, wird es (falls möglich) danach mehr als 10 K senden, bis die durchschnittliche Rate von 10 K erreicht ist.
UmRinnsal,
trickle ist ein Bandbreitenmanager für den Benutzerbereich. Derzeit unterstützt trickle die Gestaltung jeder SOCK_STREAM-Verbindung (siehe socket(2)), die über die Schnittstelle socket(2) hergestellt wird. Darüber hinaustrickle funktioniert nicht mit statisch verknüpften ausführbaren Dateien oder mit setuid(2)-ausführbaren Dateien..
Antwort2
Wenn möglich, verwenden Sie rsync. Die meisten NAS bieten heutzutage einen rsync-Dienst an. Er ist sicherer als eine SMB-Freigabe und ermöglicht Ihnen, die Bandbreite präzise zu drosseln. Darüber hinaus werden nur die Unterschiede zwischen Ihren Dateien übertragen, anstatt jedes Mal alles zu übertragen.
Antwort3
Vielleicht nicht ideal, aber Sie könnten das Tar in kleinere Dateiblöcke aufteilen und Ihr Skript diese mit einem Sleep-Befehl am Ende der Schleife durchlaufen lassen?