使用cwRsync實現windows下檔案定時同步【轉】

來源:互聯網
上載者:User

標籤:

1.參考文獻:

使用cwRsync實現windows下檔案定時同步(備份)

檔案同步工具CwRsync的使用方法及常用命令詳解

2.背景:

當前的SCADA架構中,有1台Server,5台FE,還有1台Client。其架構如所示:

雖然叫法不同,但是他們的安裝檔案和設定檔是完全一樣的。並且大多數情況下,也建議這些伺服器上面的設定檔保持一致,這樣只需要維護一個版本的config即可,不需要個人化定義每台伺服器上面的config檔案。由此也帶來了一個新的問題,每當我在一台機器上面修改了設定檔,我還需要在其他6台機器上面做相同的修改,重複勞動非常多。由此產生了部署一套檔案同步系統的想法,只需要在一台機器上做修改,其他機器自動定時同步即可。

3.解決方案:

  在網上找到一些檔案同步方案,最後決定使用cwRsync這個軟體。cwRsync是基於cygwin平台的rsync軟體包,支援windows對windows、windows對Linux、Linux對windows高效檔案同步。由於CwRsync已經整合了cygwin類庫,因此安裝的時候可以省去cygwin包。Cwrsync還整合了OpenSSH for windows,可以實現Linux 下Rsync一模一樣的操作。使用 cwRsync 來同步檔案後,只需要對一台主伺服器進行檔案修改,其他鏡像伺服器可以自動同步,包括檔案的更新、刪除、重新命名等。

cwRsync分為付費版和免費版兩種,我們只需要使用免費版即可,在官方網站上面下載cwRsync的用戶端版本和伺服器版本。

用戶端版本:cwRsync 4.0.5 Installer

伺服器版本:cwRsyncServer 4.0.5 Installer

4.安裝:

  對於cwRsync的安裝沒有什麼好說的,我選擇的全部都是預設安裝,對於伺服器版本的安裝,這裡再多加一句,在安裝過程中會提示要求我們輸入Service account以及密碼,如果我們不指定的話會使用SvcCWRSYNC這個賬戶,密碼是隨機產生的,所以要記住這個密碼。但是在我後面的配置中,並沒有用到這個Service account。

5.配置:

  cwRsync的架構很簡單,有一個Server和多個Client組成。安裝server版的cwRsync以後,在伺服器上面啟動cwRsync服務,然後在用戶端上面執行檔案同步命令即可實現檔案同步功能。如果我們將檔案同步命令添加到windows計劃任務當中,就可實現定義同步的功能。

5.1伺服器端配置

  在cwRsync的安裝目錄下,可以找到一個rsyncd.conf的設定檔,下面我根據自己實際的業務需求來講名設定檔的修改方法,在第二節背景中我就已經講到了,我有1台Server,5台FE,1台Client。我們的SCADA系統安裝在這七台機器的相同目錄下,都是D:\xxx,然後設定檔目錄是D:\xxx\config,我要實現的目標就是:只要我修改Server這台機器的config目錄,那麼其他六台機器(5台FE和1台Client)就會自動同步相應的配置資訊。

  下面我將自己伺服器端設定檔貼出來,在設定檔的下端,我們看到[config]標籤,這就是我們需要同步的config目錄,這裡需要注意的就是對於檔案目錄名稱的變更。我們看到設定檔中有一行寫著"Remember cygwin naming conventions : c:\work becomes /cygwin/c/work",也就是在windows系統下,目錄位址為c:\work的,在我們的設定檔path中,需要修改為/cygwin/c/work。同樣的,我們的當前想要同步的目錄是D:\xxx\config,那麼我就寫成path = /cygdrive/d/xxx/config。其他的配置就按照給出的模板來配置即可。

use chroot = falsestrict modes = falsehosts allow = *log file = rsyncd.logpid file = rsyncd.pid port = 8173 #預設連接埠8173 uid = 0 #不指定uid,不加這一行將無法使用任何賬戶 gid = 0 #不指定gid max connections = 10 #最大串連數10 # Module definitions# Remember cygwin naming conventions : c:\work becomes /cygwin/c/work#[config]path = /cygdrive/d/xxx/config #表示檔案目錄read only = falsetransfer logging = yeslock file = rsyncd.lock#auth users = service-scada #認證使用者名稱#secrets file = rsync.password #認證使用者的使用者名稱和密碼儲存位置

  在配置完畢以後,我們接下來就需要啟動cwRsync的服務,我們將此服務設定為自動啟動,如所示。

  還有,在上面我們指定RsyncServer的連接埠是8173,我們可以通過netstat -an這個命令來檢查8173連接埠是否被監聽,如所示。

5.2用戶端配置

在安裝完cwRsync的用戶端以後,我們看到預設的安裝目錄是C:\Program Files\cwRsync,我們記下這個安裝目錄,後面會用到這個安裝目錄。

在用戶端上建立一個記事本,在記事本中輸入以下資訊:

1 c:2 cd C:\Program Files\cwRsync\bin3 rsync -av rsync://10.138.16.54:8173/config /cygdrive/d/xxx/config 

  然後再將此記事本重新命名為config_rsync.bat,就形成了一個批次檔。在批次檔中,之所以需要添加第1、2行,是因為在安裝cwRsync用戶端的時候,並沒有將cwRsync的程式目錄添加到path這個環境變數當中,如果在環境變數path當中添加C:\Program Files\cwRsync\bin,則不需要在批處理中添加第1、2行。

  第三行"rsync -av rsync://10.138.16.54:8173/config /cygdrive/d/xxx/config"的含義是從伺服器同步config檔案,同步到本地的D:\xxx\config目錄下面。同步會以server上面的版本為準,如果在fe上面存在同名檔案會被替換。

5.3通過計劃任務用戶端定時同步檔案

  前面通過批次檔來實現檔案同步還是手動操作,後面通過添加計劃任務即可實現。我們添加一個叫做rsync_scada的計劃任務,然後指定其運行指令碼是config_rsync.bat,如所示:

在排程中設定執行時間,如所示,這樣設定能夠做到每個十分鐘就能同步一次config目錄。

6.日誌查看:

對於檔案同步的日誌,只能在安裝有伺服器版cwRsync的機器上面查看。在5.1中提到了伺服器端的設定檔,其中有一行是:log file = rsyncd.log。我們在安裝目錄下就能找到 rsyncd.log這個檔案,開啟檔案我們可以看到所有的記錄。下面我摘錄部分日誌資訊

 View Code 7.Windows下rsync服務無法啟動的解決方案

  伺服器在意外重啟後,RsyncServer服務不能啟動,提示“本機電腦上的reyncserver服務啟動後又停止了”,方法是將安裝目錄下的rsyncd.pid檔案刪除或改名即可,再重新啟動RsyncServer服務,OK,成功了,rsyncd.pid檔案會自動重建。

8.rsync排除目錄的使用方法

需求情境:當前希望將一台server上面的一個檔案夾同步到5個client上面去,但是又不希望同步所有檔案,由個別檔案是不需要同步的,所以必須在server的設定檔中添加排除同步的檔案,這就需要用到了exclude這個參數。這個可以在client上面使用,也可以直接在server上面的進行配置。下面的例子是在server的rsyncd.conf檔案上面配置的。

案例:config檔案目錄下有test1、test2和test3這三個目錄,這三個目錄當中都有一個test.txt檔案。下面通過不同的配置資訊來實現不同的同步要求。

ENVISION——config——test1——test.txt

        ||———test2——test.txt

        ||———test3——test.txt

8.1通過exclude關鍵字實現test1目錄的例外
[config]path = /cygdrive/d/ENVISION/config#exclude from = rsync.excludeexclude = test1/read only = falsetransfer logging = yeslock file = rsyncd.lock
8.2通過exclude from關鍵字實現test2和test3目錄的例外
[config]path = /cygdrive/d/ENVISION/configexclude from = rsync.exclude#exclude = test1/read only = falsetransfer logging = yeslock file = rsyncd.lock

其中rsync.excluede檔案跟rsyncd.conf在同一目錄下,其中的檔案內容是,其中“/”非常重要。

test2/test3/
8.2排除目錄下的指定檔案

exclude和exclude from不僅僅指限制與目錄,也可以使指定的檔案名稱。

在test1目錄下添加一個檔案test2.txt,然後進行如下配置

[config]path = /cygdrive/d/ENVISION/configexclude from = rsync.excludeexclude = test1/test.txtread only = falsetransfer logging = yeslock file = rsyncd.lock

再次執行同步命令,會發現test1/test2.txt會被同步,而test1/test.txt不會被同步。

使用cwRsync實現windows下檔案定時同步【轉】

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.