<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推薦




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


    網站導航:
     
    主站蜘蛛池模板: 韩国二级毛片免费播放| 男人的好免费观看在线视频| 亚洲 综合 国产 欧洲 丝袜| 亚洲人成色777777老人头| 免费下载成人电影| 日韩亚洲国产高清免费视频| 在线a人片天堂免费观看高清| 亚洲一区精彩视频| 成人激情免费视频| 国产精品亚洲专区无码牛牛| 四只虎免费永久观看| 一级毛片不卡免费看老司机| 亚洲宅男天堂在线观看无病毒| 日韩精品免费在线视频| 亚洲精品资源在线| 国产精品视频永久免费播放| 亚洲国产精品18久久久久久| 免费a级黄色毛片| 国产男女爽爽爽免费视频| 亚洲成色999久久网站| 欧洲乱码伦视频免费| 看成年女人免费午夜视频| 亚洲色成人WWW永久网站| 亚洲免费福利视频| 亚洲成av人片在www鸭子| 亚洲女久久久噜噜噜熟女| 久久精品国产免费观看| 色天使亚洲综合一区二区| 亚洲韩国精品无码一区二区三区| 亚洲免费福利视频| 亚洲av成人中文无码专区| 亚洲av综合av一区| 在线免费一区二区| 精品成人免费自拍视频| 在线观看亚洲AV日韩A∨| 亚洲一级特黄大片无码毛片| 1000部拍拍拍18免费网站| 精品在线观看免费| 亚洲精品资源在线| 亚洲综合色成在线播放| 91免费国产在线观看|