DeltaCopy包覆Rsync的同步程式

趁著測試 VMWare ESX 的機會, 順便結合上次測試的 FreeNAS iSCSI 的功能, 來做日常備份的還原測試, 其測試環境設定如下:

VMWare ESX 主機, 上面安裝 Windows 2003 Server (測試版), 安裝 iSCSI initiator, 在FreeNas 主機上安裝 320G HDD 做軟體的 RAID5, 畫出一個 320G 的檔案給 iSCSI Target 使用, 由w2k3 server 掛載進來變成一個 HDD, 之後再由Server 上執行 NTBackup 讀取另外一台主機上面的完整備份檔案 (檔案放置在外接式硬碟上, 靠網路分享功能讀取).

所以該機制資料會由 Production Server 讀取本機的 USB 外接硬碟, 傳輸到 VMWare ESX 上面建置的 W2k3 測試 Server 上面解開後, 回存到FreeNAS iSCSI 服務上, 速度不盡理想, 不過 FreeNAS 的網路流量約在 40M ~ 60M BPS 左右, 效能換成 RAID0 或許還會在提昇一點.

由於該備份檔案約略有 250G 以上的容量, 所以光光ReStore 的時間就必須要花費 22 小時以上, 真正遇到需要還原的話可能會被使用者罵到臭頭, 所以還是需要重新考量其備份的方式, 以還原速度來看還是以檔案同步最快, 備份之後再還原都必須要花費數十個小時以上的時間, 對公司的影響甚深.

針對以上的缺點重新思考其備份策略, 原來想要用 Rsync for windows 的程式, 讓 Windows 的路徑可以直接跟 FreeNas 同步, 後來找到了 DeltaCopy 這個程式 , 該程式是把 RSync 包裝起來直接可以在 Windows 上面執行, 換言之就可以藉由這套程式來做到同步的功能.

當然在市面上有很多程式都可以做到這個部分, 那 DeltaCopy 有何特別之處呢?
1. 她是 OpenSource 所以沒有版權上面的問題
2. 核心是使用 RSync 還可以在傳輸的時候加上 SSH 加密, 防止封包備擷取
3. 傳輸前可以預先壓縮, 等到收到那方才解開, 減少網路流量
4. 最神奇的是他可以只傳輸檔案實際被異動的部份

依照官網的說法:

Let’s say you have to backup one file that is 500 MB every night. A normal file copy would copy the entire file even if a few bytes have changed. DeltaCopy, on the other hand, would only copy the part of file that has actually been modified. This reduces the data transfer to just a small fraction of 500 MB saving time and network bandwidth. (擷取自: http://www.aboutmyip.com/AboutMyXApp/DeltaCopy.jsp)
假設每天晚上都要備份一個 500MB 的檔案, 在只有變更幾個位元組的狀況下, 一般的檔案複製還是必須要把整個檔案複製一次. 而 DeltaCopy 可以只複製被變更的部份, 經由資料傳輸量的減少, 可以省時又省頻寬. 這才是最吸引人的地方, 在高階的 Storage 都可能會有這個功能, 由軟體來達成也有很多機制做得到, 但是免費就不多見了.

所以馬上下載回來實測一下, 安裝介面真是簡單到不行, 安裝完畢後就會顯示有 DeltaCopy Client 及 DeltaCopy Server 兩個程式, 當然在 Server 端要執行 DeltaCopy Server, 並把它註冊成一個 Windows Service, 在 Virtual Directories 上面也必須要指定一個資料夾或磁碟機來存放由 Client 端傳過來的資料. 細節就不多說因為介面真的很簡單, 是否要使用 ID/Password 也是可以選擇的. 設定後可以防止其他 Client 不當的連結來破壞其內容.
DeltaCopy包覆Rsync的同步程式

在自己的機器裝上 Client 端後, 跟 Server 配對好 (設定 Server IP / server 上的 Virtual Directory) 存檔成一個 Profile, 就可以排程自動執行, 或者是由人為的點選來執行.

執行時會彈出一個監控的小視窗,可以直接關閉它或者中斷備份
DeltaCopy包覆Rsync的同步程式

由於採用壓縮後傳送, 所以 CPU 使用率都維持在一定的水準, 用戶端的約在 30~50% 左右.
DeltaCopy包覆Rsync的同步程式

Server端也差不多, 不過這顆 CPU 是 Celeron 1.6G 且還要負責 Rsync 傳過來的資料解壓縮, 再寫入到啟用壓縮功能的 Folder 去, 使用率還可以接受.
DeltaCopy包覆Rsync的同步程式

Server 端所使用的頻寬都約在 3~5% 以下, 約在 30~50MBPS.
DeltaCopy包覆Rsync的同步程式

總共備份約 20.6G 的檔案, 需要花費 3 小時左右的時間, 平均每小時可處理約 7G 左右, 兩台主機是透過 100M bps 的線路所連結.

同時 Summary 畫面看到部分簡體的檔名無法正確的被複製過去, 懷疑是 Unicode 的問題, 所以上網去抓被修正成 UTF-8 的 Library, 重新執行的效果會變得更糟糕, 原先中文檔名的部份反而出現錯誤, 此問題暫時無解.

在〈DeltaCopy包覆Rsync的同步程式〉中有 5 則留言

    1. 後來我改用 FastCopy 這隻程式, 不過也喪失很多功能, 如傳檔加密等等… 小弟的網誌也有一些試用的想法, 可以參考看看. ^_^

      1. 我發現新版的 Cygwin 已經支援 Unicode 了 我把所有的 dll 都用新版的覆蓋過去,之前不能支援的簡體字問題解決了,不過出現新的問題,有資料夾會出現 rsync error: error in socket IO (code 10) 就不能跑了..orz

  1. 1.若你的檔案名稱 簡繁體 都有的話
    2.資料夾的層數很多…
    3.檔案數量 10 萬個以上..

    Cygwin to freenas
    用這個方案來備份..會有 Lose…(實作後..殘念)

    如果用於 壓縮打包之後
    Cygwin to freenas
    那就還好..

    1. Hero 大大,

      謝謝分享喔.. 因為該軟體沒有辦法 100% 能正確的複製檔案, 所以就先給他擱置, 等到解決方案成熟後再來試試. 感恩.

發表迴響

%d 位部落客按了讚: