使用cwRsync實現windows伺服器之間檔案同步備份

來源:互聯網
上載者:User

同步使用cwRsync實現。由於windows沒有inotify功能,因此只能實現定時同步,我實際中採用每分鐘同步一次(考慮到使用者上傳的速度實際遠低於內網1GB網速,因此此方案是可行的)。具體實現過程如下:

1、軟體準備:
用戶端版本:cwRsync 4.0.5 Installer(最新版5.22,根據需要選擇)

伺服器版本:cwRsyncServer 4.0.5 Installer(最新版5.22,根據需要選擇)

2、 安裝:
在APP1(暫且定義為主伺服器)上安裝cwRsyncServer;Windows下軟體的安裝很簡單,安裝cwRsync時,只需記住如下的密碼即可,其他預設:

在APP2上安裝cwRsync用戶端版本。同樣全部預設即可。

3、配置:
3.1 、伺服器端配置
在cwRsync的安裝目錄下(預設路徑:C:Program Files (x86)ICW),可以找到一個rsyncd.conf的設定檔,先備份一個,然後再修改。

 代碼如下 複製代碼

use chroot = false

strict modes = false

hosts allow = *

log file = rsyncd.log

uid = 0  ##指定uid為0,不指定將無法使用

gid = 0

#定義需要同步的路徑,名稱任意,方便自己識別就好

[bbsapp]

path = /cygdrive/d/APPSYSTEM/bbs/   #表示路徑:d:\APPSYSTEMbbs

read only = false

ignore errors

transfer logging = yes

hosts allow = 192.168.18.0/255.255.255.0

auth users = SvcCWRSYNC   #認證賬戶,安裝時的那個賬戶

secrets file = rsync.password  #密碼檔案

在上述安裝目錄下建立一個密碼檔案rsync.password,內容如下:

 代碼如下 複製代碼

SvcCWRSYNC:pw123456

說明:冒號前面為上述賬戶名,冒號後面為安裝時提示的那個密碼,也可以在安裝時指定。

配置完畢後,即可重啟cwRsync服務了,如下:

3.2、用戶端配置

進入用戶端的預設安裝目錄C:Program Files (x86)cwRsync,建立一個密碼檔案rsync.password,將上述使用者的密碼寫入這個檔案(僅僅是密碼)。注意該檔案的許可權必須所有者為administrator,且許可權為600(即只有管理員有許可權),否則同步時會報如下錯誤:

 代碼如下 複製代碼

password file must be owned by root when running as root

然後在任意位置建立一個批處理,命令內容如下:

 代碼如下 複製代碼

cd /d "C:Program Files (x86)cwRsyncbin"

rsync -avz --delete-after --ignore-errors --progress --password-file=”/cygdrive/c/ Program Files (x86)/cwRsync/rsync.password” SvcCWRSYNC@app1_IP::bbsapp /cygdrive/d/APPSYSTEM/bbs

在計劃任務中調用此批處理,並設定為每分鐘一次即可。

4、cwRsync用戶端命令詳解:
-v, --verbose 詳細模式輸出

-q, --quiet 精簡輸出模式

-c, --checksum 開啟校正開關,強制對檔案傳輸進行校正

-a, --archive 歸檔模式,表示以遞迴方式傳輸檔案,並保持所有檔案屬性,等於-rlptgoD

-r, --recursive 對子目錄以遞迴模式處理

-R, --relative 使用相對路徑資訊

-b, --backup 建立備份,也就是對於目的已經存在有同樣的檔案名稱時,將老的檔案重新命名為~filename。可以使用--suffix選項來指定不同的備份檔案首碼。

--backup-dir 將備份檔案(如~filename)存放在在目錄下。

-suffix=SUFFIX 定義備份檔案首碼

-u, --update 僅僅進行更新,也就是跳過所有已經存在於DST,並且檔案時間晚於要備份的檔案。(不覆蓋更新的檔案)

-l, --links 保留軟鏈結

-L, --copy-links 想對待常規檔案一樣處理軟鏈結

--copy-unsafe-links 僅僅拷貝指向SRC路徑分類樹以外的鏈結

--safe-links 忽略指向SRC路徑分類樹以外的鏈結

-H, --hard-links 保留硬鏈結

-p, --perms 保持檔案許可權

-o, --owner 保持檔案屬主資訊

-g, --group 保持檔案屬組資訊

-D, --devices 保持裝置檔案資訊

-t, --times 保持檔案時間資訊

-S, --sparse 對疏鬆檔案進行特殊處理以節省DST的空間

-n, --dry-run現實哪些檔案將被傳輸

-W, --whole-file 拷貝檔案,不進行增量檢測

-x, --one-file-system 不要跨越檔案系統邊界

-B, --block-size=SIZE 檢驗演算法使用的塊尺寸,預設是700位元組

-e, --rsh=COMMAND 指定使用rsh、ssh方式進行資料同步

--rsync-path=PATH 指定遠程伺服器上的rsync命令所在路徑資訊

-C, --cvs-exclude 使用和CVS一樣的方法自動忽略檔案,用來排除那些不希望傳輸的檔案

--existing 僅僅更新那些已經存在於DST的檔案,而不備份那些新建立的檔案

--delete 刪除那些DST中SRC沒有的檔案

--delete-excluded 同樣刪除接收端那些被該選項指定排除的檔案

--delete-after 傳輸結束以後再刪除

--ignore-errors 及時出現IO錯誤也進行刪除

--max-delete=NUM 最多刪除NUM個檔案

--partial 保留那些因故沒有完全傳輸的檔案,以是加快隨後的再次傳輸

--force 強制移除目錄,即使不為空白

--numeric-ids 不將數位使用者和組ID匹配為使用者名稱和組名

--timeout=TIME IP逾時時間,單位為秒

-I, --ignore-times 不跳過那些有同樣的時間和長度的檔案

--size-only 當決定是否要備份檔案時,僅僅察看檔案大小而不考慮檔案時間

--modify-window=NUM 決定檔案是否時間相同時使用的時間戳記視窗,預設為0

-T --temp-dir=DIR 在DIR中建立臨時檔案

--compare-dest=DIR 同樣比較DIR中的檔案來決定是否需要備份

-P 等同於 --partial

--progress 顯示備份過程

-z, --compress 對備份的檔案在傳輸時進行壓縮處理

--exclude=PATTERN 指定排除不需要傳輸的檔案模式

--include=PATTERN 指定不排除而需要傳輸的檔案模式

--exclude-from=FILE 排除FILE中指定模式的檔案

--include-from=FILE 不排除FILE指定模式比對的檔案

--version 列印版本資訊

--address 綁定到特定的地址

--config=FILE 指定其他的設定檔,不使用預設的rsyncd.conf檔案

--port=PORT 指定其他的rsync服務連接埠

--blocking-io 對遠程shell使用阻塞IO

-stats 給出某些檔案的傳輸狀態

--progress 在傳輸時現實傳輸過程

--log-format=formAT 指定記錄檔格式

--password-file=FILE 從FILE中得到密碼

--bwlimit=KBPS 限制I/O頻寬,KBytes per second

-h, --help 顯示協助資訊

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

5.2、提示“password file must be owned by root when running as root”
用戶端使用命令同步時,提示上述錯誤,原因為密碼檔案許可權不對,檔案屬主(所有者)必須為administrator,且許可權為600(即只有管理員有許可權)。

6、排除
兩台伺服器上,有些緩衝目錄或臨時檔案,以及特定配置可能是不需要同步的,因此需要進行排除。所以必須在server的設定檔中添加排除同步的檔案,這就需要用到了exclude這個參數。

6.1、目錄排除
exclude這個參數可以在client上面使用,也可以直接在server上面的進行配置。下面的例子是在server的rsyncd.conf檔案上面配置的。

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

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

||———test2——test.txt

||———test3——test.txt

通過exclude關鍵字實現test1目錄的例外

 代碼如下 複製代碼

[config]
path
= /cygdrive/d/ENVISION/

config
#exclude
from =

rsync.exclude
exclude
= test1/read only = falsetransfer logging = yeslock file = rsyncd.lock

通過exclude from關鍵字實現test2和test3目錄的例外

 代碼如下 複製代碼

[config]
path
= /cygdrive/d/ENVISION/

config
exclude
from =

rsync.exclude
#exclude
= test1/read only = falsetransfer logging = yeslock file = rsyncd.lock

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

test2/test3/
6.2、檔案排除
exclude和exclude from不僅僅指限制與目錄,也可以使指定的檔案名稱。

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

 代碼如下 複製代碼

[config]
path
= /cygdrive/d/ENVISION/

config
exclude
from =

rsync.exclude
exclude
= test1/

test.txt
read only
= falsetransfer logging = yeslock file = rsyncd.lock

再次執行同步命令,會發現test1/test2.txt會被同步,而test1/test.txt不會被同步,好了如果我們要實現自動同步還需要如下做個計劃任務

下面介紹一下如何通過windows中的“任務計劃”來建立定時任務,執行定時同步圖文的,前面介紹的是命令的估計有些朋友會會搞。

      首先在用戶端的機器上的: 控制項面板->任務計劃->點擊“新增工作計劃”, 在相應的快顯視窗中點擊下一步,然後點擊導航視窗中的“瀏覽”按鈕,如下,並從中選擇之前建立的批次檔”dnt_sync.bat”:
        
      這時系統會顯示如下視窗提示當前計劃任務執行方式,我這裡選擇每天執行(一次):
     
      到這裡,系統就會建立一個叫dnt_sync的任務計劃,同時在接下來的視窗中提示任務的開始執行時間:
    
 
      這裡不做任何修改,直接點擊下一步,接著是身分識別驗證(通常是管理員身份),必定任務計劃非同兒戲,要有足夠的許可權才可以玩的轉:)
    
      最後點擊完成,就建立了一個任務計劃。只不過它是按天執行的,如果我們希望其每分鐘執行一次又該怎麼辦呢,其實很簡單,只要在用滑鼠點擊新建立的任務計劃,並在快顯功能表中選擇“屬性”,這時在快顯視窗的“排程”中點擊“進階按鈕”,如下:
    
 
      這時就會彈出一個叫“進階計劃選項”的子視窗,在其它做如下設定:
    
      到這裡,這個計劃任務就會每天24小時,以每分鐘運行一次的方式來同步之前的那兩個檔案夾了
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.