У меня есть довольно скромный Ubuntu (Jaunty), работающий как небольшой веб-сервер. Каждую ночь у меня есть задание cron, которое устанавливает важные каталоги tar / gzip и выполняет простой cp, чтобы скопировать их на резервный диск NAS, который был смонтирован локально по SMB (по сути, резервная копия «за пределами площадки»)
Сетевое подключение к приставке - 802.11G (54 Мбит / с), поэтому, естественно, оно довольно медленное, но проблема в том, что при копировании файлов беспроводная полоса пропускания между веб-сервером и маршрутизатором полностью загружается процедурой копирования, а веб- запросы либо отклоняются, либо реагируют очень медленно.
Я пробовал использовать Trickle в автономном режиме для регулирования процедуры копирования, но это, похоже, не имело никакого значения.
У кого-нибудь есть предложения или советы? Я подозреваю, что мне нужно запустить некоторую форму QoS на сервере, но у меня действительно есть NFI. Надеялся на простое, беспроблемное решение;)
Спасибо, Ксеркс
Если возможно, используйте rsync. Большинство NAS в настоящее время предоставляют службу rsync, она более безопасна, чем общий ресурс smb, и позволяет точно регулировать пропускную способность. Более того, он будет переносить только различия между вашими файлами, а не передавать все каждый раз.
Eсть wput
утилита, которая работает иначе, чем более известные wget
.
Его можно использовать для загрузки файлов с контролируемой скоростью.
−−limit − rate = СТАВКА
Если вы не хотите, чтобы Wput занимал всю доступную пропускную способность, укажите этот флаг. СТАВКА - это числовое значение. Подразумеваются единицы 'K ’(для KiB) и’ M ’(для MiB). Скорость загрузки в среднем ограничена, что означает, что если вы ограничите скорость до 10 КБ, а Wput смог отправить только 5 КБ в течение первых секунд, он отправит (если возможно) впоследствии более 10 КБ, пока не будет достигнута средняя скорость 10 КБ. .
Около струйка,
trickle - это менеджер полосы пропускания пользовательского пространства. В настоящее время trickle поддерживает формирование любого соединения SOCK_STREAM (см. Socket (2)), установленного через интерфейс socket (2). Более того, trickle не работает ни со статически связанными исполняемыми файлами, ни с исполняемыми файлами setuid (2).
Может быть, не идеально, но, возможно, вы могли бы разделить tar на более мелкие фрагменты файлов и заставить ваш скрипт перебирать их со сном в конце цикла?