將檔案複製到 SMB 安裝的 NAS 磁碟機時限製網路速度

將檔案複製到 SMB 安裝的 NAS 磁碟機時限製網路速度

我有一個相當普通的 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 分割成更小的檔案區塊,並讓您的腳本在循環底部睡眠時迭代它們?

相關內容