天天看點

Windows 檔案同步方案讨論

在日常運維工作中,經常會遇到這樣的情況:我們需要在無人值守的情況下完成檔案、檔案夾的同步過程,已實作周期性的備份,避免單點故障。本研究實作了本地Windows主機與遠端Windows主機,本地Windows主機與遠端Linux主機目錄的定時自動同步。實驗在Windows2003,REHL5.4下實驗通過。

一、軟體準備

Linux下有rsync,Windows下也有類似的軟體,就是cwRsync,此軟體分為伺服器端/用戶端。目前最新版本為:4.04版,cwRsyncServer_4.0.4_Installer,cwRsync_4.0.4_Installer。

cwRsync打包了Rsync和Cygwin,使用cwRsync可以進行快速的遠端備份和同步。Rsync使用了Rsync算法,通過它可以非常快的進行遠端檔案的同步。這種算法隻需要在鍊路上傳遞檔案不同的部分,而不需要提前在一端準備好檔案所有版本的。乍一看這似乎是不可能的,因為計算兩個檔案之間的不同,通常需要本地通路的這兩個檔案。

Rsync通常使用ssh進行資料通訊,安裝它不需要任何特殊權限,但是你必須有一個可以運作ssh軟體系統。

作為選擇,rsync可以運作在守護程序模式,監聽一個socket端口。這通常是用于公共檔案的分發,雖然身份驗證和通路控制是可利用的。Cygwin是一個Windows下類linux系統環境。它由一個DLL(cygwin1.dll),模拟大量的Linux API功能,以及工具的集合。

詳細情況可通過http://itefix.no/cwrsync/了解。

二、初始化安裝

cwRsync支援多種平台:client – NT/2000/XP/2003/Vista/7,Server – NT/2000'/2003/2008/Vista/7.

cwRsync已一個zip壓縮包包含一個Windows下安裝程式形式釋出。解壓下載下傳檔案,運作cwRsync_x.x.x_Installer.exe或者cwRsync_Server_x.x.x_Installer.exe(伺服器版):

  1. 歡迎頁面,點選“Next”進入 。
  2. 檢視License協定。
  3. 根據安裝包的不同選在安裝元件:用戶端安裝包有一個可選項(Secure Channel Wrapper & Wizard),它做一個簡單的工作,安裝一個安全的連接配接方式與伺服器端程式。
  4. 指定一個安裝路徑。
  5. 指定一個伺服器的賬戶(僅伺服器端程式)。
  6. 安裝開始。可以點選“Details”按鈕,檢視更多關于安裝的詳細資訊。
OK,cwRsync已經安裝成功。

cwRsync伺服器端,需要根據需要修改配置檔案。安裝過程中會自動建立SvcCWRSYNC使用者,所屬user組。如果定義了上傳子產品,則必須保證cwRsync server有正确的權限可以通路目錄。可以通過開始菜單程式快速通路此配置檔案。

cwRsync Server會安裝為WINDOWS服務,啟動參數為:--config rsyncd.conf --daemon --no-detach。預設自動啟動。

三、實驗環境

服務端(需要背同步的資料所在的伺服器):192.168.1.10

用戶端(需要将資料同步的伺服器):192.168.1.20

需要被同步的資料: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; }

打開指令行視窗,然後執行: net start RsyncServer。伺服器端準備完成。

Client:

打開指令行視窗,然後執行:rsync -avz 192.168.1.10::RESOURCE /cygdrive/e/back/resource

注意:如果剛剛沒有把cwrsync的安裝目錄添加到windows的path變量中,系統是無法執行rsync指令的。添加方法,例如我把cwrsync的用戶端安裝在D:\Program Files\cwRsync,則需要把D:\Program Files\cwRsync\bin這個路徑添加到windows的系統path變量中。添加之後需要重新打開cmd指令行視窗才可以執行上面的指令。

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 腳本結束時間:%ETIME%

17: PAUSE

繼續閱讀