Linux

rsync 的 delta 算法是否適用於 samba 共享?

  • April 10, 2012

我有一個 cron 作業來使用 rsync 同步 Windows samba 共享上的數據(我在啟動時使用 /etc/fstab 掛載)。我的問題是,轉移似乎花費的時間幾乎與初始轉移一樣長。我有很多文件,所以我想它仍然需要檢查每個文件是否有更改,但是第二次應該快一點嗎?我只是使用這樣的命令:

rsync -aver ssh /mnt/winserver/d/www /path/to/disk/rsync-backup/

其中 /mnt/winserver 是掛載的 cifs 共享,/path/to/disk 是我的本地磁碟空間。

要記住的是,當 rsync 伺服器在遠端系統上執行而客戶端在本地系統上時,delta 算法最有用。

當由於 stat() 輸出不同(大小、修改日期)而決定需要傳輸大文件時,一些 rsync 程序將需要讀取源文件和目標文件。如果您掛載了遠端文件,則在本地系統上執行的程序將通過網路讀取整個文件。如果您連接到遠端系統上的 rsync 守護程序,那麼遠端 rsync 程序將讀取文件,並使用算法來決定需要更新哪些塊,並且只有差異會通過網路。

至於為什麼慢,可能有很多原因。如果您選擇的文件基本上是大量的小文件,那麼您需要傳輸的時間可能無關緊要,您正在等待 stat() 完成。

如果您通過 WAN 連接執行 SMB,您可能會遇到標準 SMB 因高延遲連結問題而陷入困境。

你可能想看看在你的 Windows 機器上設置一個可以執行 rsync 的 SSH 伺服器。它不再是免費的,但我通常使用 CopSSH/cwRsync。

引用自:https://serverfault.com/questions/378272