
我有一個相當普通的 Ubuntu 盒子(Jaunty)作為一個小型網頁伺服器運行。每天晚上我都有一個 cron 作業,它 tar/gzip 的重要目錄,並執行一個簡單的 cp 將它們複製到已本地安裝 SMB 的備份 NAS 驅動器(實際上是“異地”備份)
盒子的網路連線是802.11G(54Mbps),所以速度自然很慢,但問題是複製檔案時,網路伺服器和路由器之間的無線頻寬被複製過程完全飽和,並且網路-請求要麼被拒絕,要麼回應速度極其緩慢。
我嘗試在獨立模式下使用 Trickle 來限制複製過程,但這似乎沒有任何區別。
有人有建議或建議嗎?我懷疑我需要在伺服器上運行某種形式的 QoS,但確實有 NFI。希望有一個簡單的靈丹妙藥解決方案;)
謝謝,薛西斯
答案1
有一個wput
實用程式的工作方式與更廣為人知的方式相反wget
。
它可用於以受控的速率上傳檔案。
--限制-速率=速率
如果您不希望 Wput 耗盡所有可用頻寬,請指定此標誌。 RATE 是一個數值。可以理解單位“K”(KiB)和“M”(MiB)。平均上傳速率受到限制,這意味著如果您將速率限制為 10K,並且 Wput 在前幾秒只能發送 5K,之後它將發送(如果可能)超過 10K,直到達到 10K 的平均速率。
關於細流,
rickle 是一個使用者空間頻寬管理器。目前,trickle 支援透過 socket(2) 介面建立的任何 SOCK_STREAM(請參閱 socket(2))連接的整形。此外,rickle 不適用於靜態連結的可執行文件,也不適用於 setuid(2) 執行檔。
答案2
如果可能,請使用 rsync。現在大多數 NAS 都提供 rsync 服務,它比 SMB 共享更安全,並且允許您精確地限制頻寬。此外,它只會傳輸文件之間的差異,而不是每次都傳輸所有內容。
答案3
也許並不理想,但也許您可以將 tar 分割成更小的檔案區塊,並讓您的腳本在循環底部睡眠時迭代它們?