Windows 文件同步方案讨论
在日常運維工作中,經(jīng)常會遇到這樣的情況:我們需要在無人值守的情況下完成文件、文件夾的同步過程,已實現(xiàn)周期性的備份,避免單點故障。本研究實現(xiàn)了本地Windows主機(jī)與遠(yuǎn)程Windows主機(jī),本地Windows主機(jī)與遠(yuǎn)程Linux主機(jī)目錄的定時自動同步。實驗在Windows2003,REHL5.4下實驗通過。
一、軟件準(zhǔn)備
Linux下有rsync,Windows下也有類似的軟件,就是cwRsync,此軟件分為服務(wù)器端/客戶端。目前最新版本為:4.04版,cwRsyncServer_4.0.4_Installer,cwRsync_4.0.4_Installer。
cwRsync打包了Rsync和Cygwin,使用cwRsync可以進(jìn)行快速的遠(yuǎn)程備份和同步。Rsync使用了Rsync算法,通過它可以非常快的進(jìn)行遠(yuǎn)程文件的同步。這種算法只需要在鏈路上傳遞文件不同的部分,而不需要提前在一端準(zhǔn)備好文件所有版本的。乍一看這似乎是不可能的,因為計算兩個文件之間的不同,通常需要本地訪問的這兩個文件。
Rsync通常使用ssh進(jìn)行數(shù)據(jù)通訊,安裝它不需要任何特殊權(quán)限,但是你必須有一個可以運行ssh軟件系統(tǒng)。
作為選擇,rsync可以運行在守護(hù)進(jìn)程模式,監(jiān)聽一個socket端口。這通常是用于公共文件的分發(fā),雖然身份驗證和訪問控制是可利用的。Cygwin是一個Windows下類linux系統(tǒng)環(huán)境。它由一個DLL(cygwin1.dll),模擬大量的Linux API功能,以及工具的集合。
詳細(xì)情況可通過http://itefix.no/cwrsync/了解。
二、初始化安裝
cwRsync支持多種平臺:client – NT/2000/XP/2003/Vista/7,Server – NT/2000'/2003/2008/Vista/7.
cwRsync已一個zip壓縮包包含一個Windows下安裝程序形式發(fā)布。解壓下載文件,運行cwRsync_x.x.x_Installer.exe或者cwRsync_Server_x.x.x_Installer.exe(服務(wù)器版):
OK,cwRsync已經(jīng)安裝成功。
cwRsync服務(wù)器端,需要根據(jù)需要修改配置文件。安裝過程中會自動創(chuàng)建SvcCWRSYNC用戶,所屬user組。如果定義了上傳模塊,則必須保證cwRsync server有正確的權(quán)限可以訪問目錄。可以通過開始菜單程序快速訪問此配置文件。
cwRsync Server會安裝為WINDOWS服務(wù),啟動參數(shù)為:--config rsyncd.conf --daemon --no-detach。默認(rèn)自動啟動。
三、實驗環(huán)境
服務(wù)端(需要背同步的數(shù)據(jù)所在的服務(wù)器):192.168.1.10
客戶端(需要將數(shù)據(jù)同步的服務(wù)器):192.168.1.20
需要被同步的數(shù)據(jù):d:/resource
需要同步到d:/back/resource
Server:
修改rsyncd.conf
1: uid = 0 2: gid = 0 3: use chroot = false 4: strict modes = false 5: hosts allow = * 6: log file = rsyncd.log 7: ? 8: # Module definitions 9: # Remember cygwin naming conventions : c:\work becomes /cygwin/c/work 10: # 11: [RESOURCE] 12: path = /cygdrive/d/resource 13: read only = false 14: transfer logging = yes 15: ? .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }打開命令行窗口,然后執(zhí)行: net start RsyncServer。服務(wù)器端準(zhǔn)備完成。
Client:
打開命令行窗口,然后執(zhí)行:rsync -avz 192.168.1.10::RESOURCE /cygdrive/e/back/resource注意:如果剛剛沒有把cwrsync的安裝目錄添加到windows的path變量中,系統(tǒng)是無法執(zhí)行rsync命令的。添加方法,例如我把cwrsync的客戶端安裝在D:\Program Files\cwRsync,則需要把D:\Program Files\cwRsync\bin這個路徑添加到windows的系統(tǒng)path變量中。添加之后需要重新打開cmd命令行窗口才可以執(zhí)行上面的命令。
Bat腳本編寫:
1: @ECHO OFF 2: REM ***************************************************************** 3: REM 4: REM CWRSYNC.CMD - Batch file to start rsync command (s). 5: REM 6: REM By David.Jin 7: REM ***************************************************************** 8: SETLOCAL 9: SET STIME=%date:~0,10% %time:~0,8% 10: SET CWRSYNCHOME=%PROGRAMFILES%\RSYNC 11: SET CWOLDPATH=%PATH% 12: SET PATH=%CWRSYNCHOME%\BIN;%PATH% 13: rsync -avz 192.168.1.10::RESOURCE /cygdrive/e/back/resource 14: SET ETIME=%date:~0,10% %time:~0,8% 15: ECHO 腳本開始時間: %STIME% 16: ECHO 腳本結(jié)束時間:%ETIME% 17: PAUSE將該腳本保存為bat文件,使用windows自帶計劃任務(wù)就可以進(jìn)行定期的服務(wù)器間文件同步。
總結(jié):此方法對于正常情況下的Windows服務(wù)器間文件定期同步是非常有效的解決方案。但是對于大量小文件的同步性能上沒有官方介紹那么出色。經(jīng)常會出現(xiàn)各種main.c錯誤。從筆者這里也無法得到準(zhǔn)確的回答。不過筆者確實多次查閱了rsync mail list,可以非常明確的說:使用ssh協(xié)議進(jìn)行文件同步,程序運行會更加穩(wěn)定,同時性能消耗較大,同步效率降低。
遇見問題時,祝你好運。
轉(zhuǎn)載于:https://blog.51cto.com/jinpeng/476539
總結(jié)
以上是生活随笔為你收集整理的Windows 文件同步方案讨论的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到清明节好不好
- 下一篇: Microsoft Windows SD