rsync命令

異地備份系統的備份指令
rsync

Rsync的四種工作模式:
1.列表模式
和 ls -l 相似,負責列出源的內容。不僅可以看本地還可以看遠端
2.shell模式,也稱爲本地模式
和cp相似,本地拷貝文件

    rsync [option] SRC DEST
        -v:顯示詳細過程
        -q:靜默模式
        -c:強制對傳輸的文件進行校驗
        -r:遞歸複製
        -p:保存文件的權限
        -t:保留文件的時間戳
        -l:保留文件的符號鏈接
        -g:保留文件的屬組
        -o:保留文件的屬主
        -D:保留設備文件
        -A:保留ACL訪問控制列表
        -a:等同於-rlptgo
        -e SSH:遠程複製時使用ssh協議做承載
            通常用法爲 -e 'ssh -p ssh端口號'
        -z:對文件壓縮後傳輸

        rsync命令在使用中,如果源參數的末尾有斜線,就會複製指定目錄內的內容,而不復制目錄。
                           如果沒有斜線,則會複製目錄本身。

3.遠程shell模式,可以通過rcp,ssh等通道傳輸
    和rcp相似,不過可以實現增量備份,並且能夠通過安全的ssh方式進行數據傳輸
    採用ssh還需要指定ssh的端口

    遠程shell模式分倆種情況
        拉取pull :rsync [option] SRC [USER@]HOST:DEST      (拉取的話,遠端主機上一定要安裝rsync,不然會失敗)
        推送push :rsync [option] SRC [USER@]HOST:DEST

        [USER@]HOST 爲rsync同步時遠程的連接用戶和主機地址
4.服務器模式
  在這種模式下,rsync守護進程在一臺服務器上永久運行,接收文件傳輸請求。可以把文件發送給守護進程,也可以向它請求文件。
  服務器模式非常適合創建中心備份服務器或項目存儲庫。
  rsync的服務模式,部署時分爲rsync的服務器端和客戶端,rsync的服務端和客戶端是一個軟件包,服務端和客戶端使用同一個rsync軟件包來實現遠程鏡像和定期同步更新。

    rsync服務端可同時備份多個客戶端的數據,多個服務端可備份一個客戶端的數據。
    rsync默認端口是873,服務端在該端口接收客戶端的匿名或者認證方式的備份請求。

    rsync服務端在使用前需要進行必要的配置,配置文件爲/etc/rsyncd.conf,該文件默認沒有,需要自己手動創建。
    配置分全局配置端和模塊配置段

  rsync服務端配置文件解釋:

        uid=rsync          #指定的模塊傳輸文件時使用的用戶身份
        gid=rsync          #指定的模塊傳輸文件時使用的用戶組身份
        port=873           #默認端口
        use chroot=no      #是否禁錮用戶家目錄
        max connections=xxx #最大併發數,默認爲0不限制
        timeout =xxx        #會話超時時間
        pid file=/var/run/rsyncd.pid #進程啓動後,進程號存放路徑
        lock file=/var/run/rsyncd.lock #服務啓動,停止會用到的鎖文件
        log file=/var/log/rsyncd.log   #日誌文件存放路徑
        Log fromat = %h %o %f %l %b      # 指定日誌記錄的格式
        motd file = /etc/rsyncd.motd     # 登陸消息提示文件,可以不配置。默認爲空。
        [test]         # 模塊名稱,名稱可以任意寫,不過一般是以路徑命名,最好見名意
        Comment = test # 模塊信息描述,該描述連同模塊名在客戶連接得到模塊列表時顯示給客戶。默認沒有描述定義
        path=/test/    # 指定供備份的目錄路徑,必須指定該參數。該目錄路徑是rsync服務端的一個路徑,提供給客戶端上傳或下載
        ignore errors   # 忽略錯誤
        read only = false  # 設定是否允許客戶上載文件。若爲 true 任何上載請求均會失敗,若爲 false 且客戶端擁有服務器目錄讀寫權限則可以上載。默認值爲 true 。
        write only 設定是否允許客戶下載文件。若爲 true 任何下載請求均會失敗,默認值爲 false 。
        list = false       # 設定當客戶請求可以使用的模塊列表時,是否列出該模塊。若爲 false,則創建隱藏的模塊。默認值爲 true
        hosts allow=192.168.137.0/24  # 白名單或網段需要以空格隔開。默認是允許所有主機連接。
        hosts deny=*   # 黑名單
        Dont commpress # 指定不進行壓縮處理即可傳輸的文件,默認值是 *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
        auth users = rsync_backup  # 該選項指定由空格或逗號分隔的用戶名列表,只有這些用戶才允許連接該模塊。這裏的用戶不一定是客戶端存在的用戶。如果"auth users"被設置,那麼客戶端發出對該模塊的連接請求時,需要對用戶身份進行驗證。用戶的名和密碼以明文方式存放在"secrets file"選項指定的文件中。默認情況下無需密碼就可以連接模塊 ( 也就是匿名方式 )。
        secrets file = /etc/rsync.password # 虛擬用戶的密碼文件,裏面記錄的格式爲:用戶名:密碼
        exclude = common/   # 用來指定多個由空格隔開的多個文件或目錄 ( 相對路徑 ),並將其添加到 exclude 列表中。這等同於在客戶端命令中使用 --exclude 參數。一個模塊只能指定一個 exclude 選項。但是需要注意的一點是該選項有一定的安全性問題,客戶端很有可能繞過 exclude 列表,如果希望確保特定的文件不能被訪問,那就最好結合 uid/gid 選項一起使用。
        pre-xfer exec, post-xfer exec  # 設置可在文件傳輸前/後執行的命令。若在文件傳輸前執行的命令失敗,則取消本次傳輸操作。

    Rsync服務端的啓動:
        rsync --daemon   #以守護進程方式啓動
        #echo "/usr/bin/rsync --daemon &" >> /etc/rc.local   開機自動運行服務

        手動啓動rsync的常見參數:
            --daemon 以守護進程的方式啓動
            --address 綁定指定IP提供服務,既服務器時多網卡或虛IP模式
            --config=xxx 更改配置文件路徑,不使用默認的/etc/rsyncd.conf
            --port=xx    更改端口

 rsync客戶端配置:
    客戶端僅需安裝rsync軟件,然後創建一個本地密碼文件,對應服務端配置文件裏的每個模塊下面的虛擬用戶的密碼,以實現免密碼同步(只寫密碼不寫用戶名)

 服務器模式下同步數據的格式:
    拉取:rsync [option] [USER@]HOST::SRC DEST
    推送:rsync [option] SRC rsync://[USER@]HOST[:PORT]/DEST

 rsync服務器模式配置範例:
    服務器端:
      創建rsyncd配置文件;
        vim /etc/rsyncd.conf 
            uid=rsync
            gid=rsync
            use chroot=no
            port=873
            list=/mysqlbak
            max connections=10
            timeout=300
            Log fromat=%h %o %f %l %d
            log file=/var/log/rsyncd.log
            pid file=/var/run/rsyncd.pid

            [mysqlbak]
                path=/mysqlbak
                read only=false
                list=false
                hosts allow=182.61.49.21
                hosts deny=*
                auth users=rsync

       創建虛擬用戶:
                useradd rsync -s /sbin/nologin -M (創建一個沒有家目錄沒法登陸的用戶)
                mkdir /mysqlbak                   #創建備份目錄
                chown -R rsync.rsync /mysqlbak

       啓動服務端進程:
            rsync --daemon

       創建服務端的虛擬用戶密碼文件:
            vim /etc/rsync.password
              rsync:test@1234

       改變密碼文件權限只有root用戶能讀寫:
            chmod 600 /etc/rsync.password

    客戶端配置:
        vim /etc/rsync.password  創建客戶端密碼文件
             test@1234

        chmod 600 /etc/rsync.password  改變密碼文件權限只有root用戶能讀寫
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章