<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 23, comments - 0, trackbacks - 0, articles - 3
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    其于window系統的Rsync同步實戰

    Posted on 2008-08-18 17:04 beauty9235 閱讀(468) 評論(0)  編輯  收藏

    作者: beauty9235  鏈接:http://beauty9235.javaeye.com/blog/229634  發表時間: 2008年06月23日

    聲明:本文系JavaEye網站發布的原創博客文章,未經作者書面許可,嚴禁任何網站轉載本文,否則必將追究法律責任!

     

    其于window系統的同步實戰

    1. 遠程數據同步工具Rsync介紹

    1.1 軟件簡介

     

    Rsync是一個遠程數據同步工具,可通過LAN/WAN快速同步多臺主機間的文件。Rsync本來是用以取代rcp的一個工具,它當前由 rsync.samba.org維護。Rsync使用所謂的“Rsync演算法”來使本地和遠程兩個主機之間的文件達到同步,這個算法只傳送兩個文件的不同部分,而不是每次都整份傳送,因此速度相當快。運行Rsync server的機器也叫backup server,一個Rsync server可同時備份多個client的數據;也可以多個Rsync server備份一個client的數據。

     

      Rsync可以搭配rshssh甚至使用daemon模式。Rsync server會打開一個873的服務通道(port),等待對方Rsync連接。連接時,Rsync server會檢查口令是否相符,若通過口令查核,則可以開始進行文件傳輸。第一次連通完成時,會把整份文件傳輸一次,下一次就只傳送二個文件之間不同的部份。

     

      Rsync支持大多數的類Unix系統,無論是LinuxSolaris還是BSD上都經過了良好的測試。此外,它在windows平臺下也有相應的版本,比較知名的有cwRsyncSync2NAS

     

      Rsync的基本特點如下:

     

      1.可以鏡像保存整個目錄樹和文件系統;

     

      2.可以很容易做到保持原來文件的權限、時間、軟硬鏈接等;

     

      3.無須特殊權限即可安裝;

     

      4.優化的流程,文件傳輸效率高;

     

      5.可以使用rcpssh等方式來傳輸文件,當然也可以通過直接的socket連接;

     

    6.支持匿名傳輸。

     

     

     

    1.2 核心算法

     

      假定在名為αβ的兩臺計算機之間同步相似的文件AB,其中α對文件A擁有訪問權,β對文件B擁有訪問權。并且假定主機αβ之間的網絡帶寬很小。那么rsync算法將通過下面的五個步驟來完成:

     

      1.β將文件B分割成一組不重疊的固定大小為S字節的數據塊。最后一塊可能會比S 小。

     

      2.β對每一個分割好的數據塊執行兩種校驗:一種是32位的滾動弱校驗,另一種是128位的MD4強校驗。

     

      3.β將這些校驗結果發給α

     

      4.α通過搜索文件A的所有大小為S的數據塊(偏移量可以任選,不一定非要是S的倍數),來尋找與文件B的某一塊有著相同的弱校驗碼和強校驗碼的數據塊。這項工作可以借助滾動校驗的特性很快完成。

     

      5.α發給β一串指令來生成文件Aβ上的備份。這里的每一條指令要么是對文件B經擁有某一個數據塊而不須重傳的證明,要么是一個數據塊,這個數據塊肯定是沒有與文件B的任何一個數據塊匹配上的。

     

     

     

    1.3 命令語法

     

     rsync的命令格式可以為以下六種:

     

      rsync [OPTION]... SRC DEST

     

      rsync [OPTION]... SRC [USER@]HOST:DEST

     

      rsync [OPTION]... [USER@]HOST:SRC DEST

     

      rsync [OPTION]... [USER@]HOST::SRC DEST

     

      rsync [OPTION]... SRC [USER@]HOST::DEST

     

      rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]

     

      對應于以上六種命令格式,rsync有六種不同的工作模式:

     

      1)拷貝本地文件。當SRCDES路徑信息都不包含有單個冒號":"分隔符時就啟動這種工作模式。

     

      2)使用一個遠程shell程序(rshssh)來實現將本地機器的內容拷貝到遠程機器。當DST路徑地址包含單個冒號":"分隔符時啟動該模式。

     

      3)使用一個遠程shell程序(rshssh)來實現將遠程機器的內容拷貝到本地機器。當SRC地址路徑包含單個冒號":"分隔符時啟動該模式。

     

      4)從遠程rsync服務器中拷貝文件到本地機。當SRC路徑信息包含"::"分隔符時啟動該模式。

     

      5)從本地機器拷貝文件到遠程rsync服務器中。當DST路徑信息包含"::"分隔符時啟動該模式。

     

      6)列遠程機的文件列表。這類似于rsync傳輸,不過只要在命令中省略掉本地機信息即可。

     

    主服務器

    IP 192.168.0.100

    F:/data/www

    備份服務器

    IP 192.168.0.101

    F:/data/www

    實戰:

    1http://rsync.samba.org/ 下載cwRsync客戶端(cwRsync)和服務器端(cwRsyncServer)。

     

    2、服務器端安裝:采用默認選項安裝。

    安裝后,服務默認為手動啟動模式,到“管理工具/服務管理”里,啟動“RsyncServer”服務,并修改“RsyncServer”為自動啟動模式。

     

    1http://rsync.samba.org/ 下載cwRsync客戶端(cwRsync)和服務器端(cwRsyncServer)。

     

    安裝的過程很簡單,也很順利,從 cwRsync 網站上下載的 server and client ,都安裝了一下,不過后來發現,其實是不需要安裝 client 的,只要 server 就可以了,server 包括了 client 的功能。安裝完 server 后,會在 service 中增加 Rsync ssh 服務。

     

    服務器端安裝:采用默認選項安裝。

     

    安裝后,服務默認為手動啟動模式,到“管理工具/服務管理”里,啟動“RsyncServer”服務,并修改“RsyncServer”為自動啟動模式

     

    2、配置主服務器

    配置了一下 rsyncd.conf

     

    use chroot = false

    strict modes = false

    hosts allow = *

    log file = rsyncd.log

    pid file = rsyncd.pid

     

    # Module definitions

    # Remember cygwin naming conventions : c:\work becomes /cygwin/c/work

    #

    [test]

    path = /cygdrive/c/work

    read only = false

    transfer logging = yes

     

    只是將 [test] 中的 path 改成了我本機的備份目錄

     

    [www]

    path = /cygdrive/F/data/www

    read only = false

    transfer logging = yes

     

    3、備分服務器數據同步

     

    因為只是最簡單的數據同步,所以就不使用 ssh 了,直接啟動 rsync 服務就可以了。然后按照 usage 上面教的。

     

    rsync -av /cygdrive/F/data/www 192.168.0.100::www

     

    完成了數據的同步工作,一切順利。順便說一下,/cygdrive/d 是安裝完 cwRsync ,會自動將系統上所有的盤 mount /cygdrive/x x 表示盤符,小寫的,并把安裝目錄 mount / 了。

    這樣我們實現了從主服務器到備分服務器的數據同步

     

    下一步我們結合windows的任務調度來實現這個批處理文件,取名為XXX.cmd

    rsync -avr --ignore-errors --force 192.168.0.100::www /cygdrive/F/data/wwwroot

    test.bat

    ---------------------------------------------------------------------------------------------

    @echo off set path=%path%;C:\Program Files\cwRsyncServer\bin; date /t >> F:\syn.txt time /t >> F:\syn.txt rsync -avr --ignore-errors --force --exclude="/tmp/" --delete 192.168.0.103::test  /cygdrive/F/temp >>   F:\syn.txt date /t >> F:\syn.txt time /t >> F:\syn.txt echo . echo . echo . remote synchronous over echo . echo .

    rem pause

    ---------------------------------------------------------------------------------------------

     

    linux中安全性說明

     

    一:服務端rsyncd.conf文件配置

    uid = nobody

    gid = nobody

    use chroot = no # 不使用chroot

    max connections = 4 # 最大連接數為4

    pid file = /var/run/rsyncd.pid

    lock file = /var/run/rsync.lock

    log file = /var/log/rsyncd.log # 日志記錄文件

    [inburst] # 這里是認證的模塊名,在client端需要指定

    path = /home/inburst/python/ # 需要做鏡像的目錄

    comment = BACKUP CLIENT IS SOLARIS 8 E250

    ignore errors # 可以忽略一些無關的IO錯誤

    read only = yes # 只讀

    list = no # 不允許列文件

    hosts allow=172.25.43.57 #允許連接IP

    auth users = inburst # 認證的用戶名,如果沒有這行,則表明是匿名

    secrets file = /etc/inburst.pas # 認證文件名

     

    注:

    為安全考慮,在設置服務端rsyncd.conf模塊時,最好加上auth users = inburstsecrets file = /etc/inburst.pas,密碼寫到一個文件中inburst.pas

    執行命令時:rsync -avrp /test/ [email=inburst@172.25.43.158::test]inburst@172.25.43.158::test[/email] --password-file=inburst.pas

     

    二:客戶端腳本

    rsync -avrp /test/ [email=administrator@172.25.43.58::test]administrator@172.25.43.58::test[/email] --password-file=1234567

    (表示將客戶端test目錄下文件備份到服務器test模塊下。如果將/test/放后面,表示將服務器test模塊下目錄備份帶客戶端/test/下。)

    選項說明:

    -v, --verbose 詳細模式輸出

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

    -c, --checksum 打開校驗開關,強制對文件傳輸進行校驗

    -a, --archive 歸檔模式,表示以遞歸方式傳輸文件,并保持所有文件屬性,等于-rlptgoD

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

    -R, --relative 使用相對路徑信息

    其他參數可以查看rsync相關手冊。

     

     


    本文的討論也很精彩,瀏覽討論>>


    JavaEye推薦




    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 国产婷婷高清在线观看免费| 男女超爽刺激视频免费播放| 国产又黄又爽又刺激的免费网址 | 亚洲精彩视频在线观看| 97人妻精品全国免费视频| 亚洲人JIZZ日本人| 啦啦啦中文在线观看电视剧免费版| 亚洲一区二区三区首页| 久久国产色AV免费看| 尤物永久免费AV无码网站| 亚洲人精品亚洲人成在线| 欧美最猛性xxxxx免费| 亚洲欧洲av综合色无码| 国产又黄又爽又刺激的免费网址| 黄色一级免费网站| 亚洲人成网77777亚洲色| 免费无码又爽又刺激网站| 99久久精品国产亚洲| 亚洲高清中文字幕免费| 日韩国产欧美亚洲v片| 亚洲小说区图片区另类春色| 国偷自产一区二区免费视频| 亚洲伊人久久大香线蕉啊| 免费a级毛片高清视频不卡| 国产大陆亚洲精品国产| 久久亚洲国产精品123区| 美女视频黄的免费视频网页 | 亚洲va久久久噜噜噜久久狠狠 | 三年片在线观看免费观看大全动漫| 777亚洲精品乱码久久久久久 | 暖暖免费高清日本一区二区三区| 无码一区二区三区亚洲人妻| 中文字幕亚洲一区| 18禁免费无码无遮挡不卡网站| 精品亚洲成A人在线观看青青 | 亚洲日本乱码卡2卡3卡新区| JLZZJLZZ亚洲乱熟无码| 免费看黄视频网站| 一区视频免费观看| 亚洲av无码片在线观看| 久久久久国产亚洲AV麻豆|