linux系統rsync伺服器的管理與配置

來源:互聯網
上載者:User

標籤:linux   同步   rsync   備份   

一、rsync遠程同步伺服器

     簡介:

          Rsync(remote synchronize)是一個遠端資料同步工具,可通過LAN/WAN快速同步多台主機間的檔案,也可以使用Rsync同步本地硬碟中的不同目錄。

          Rsync是用於取代rcp的一個工具,Rsync使用所謂的“Rsync演算法”來使本地和遠程兩個主機之間的檔案達到同步,這個演算法只傳送兩個檔案的不同部分,而不是每次都整份傳送,因此速度相當快。

          Rsync支援大多數的類Unix系統,無論是Linux、Solaris還是BSD上都經過了良好的測試。此外,它在Windows平台下也有相應的版本,比較知名的有cwRsync和Sync2NAS

     特點:

          1)能更新整個分類樹和檔案系統

          2)有選擇性的保持符號串連、永久連結、檔案屬性、許可權、裝置以及時間等;

          3)對於安裝來說,無任何特殊許可權要求

          4)對於多個檔案來說,內部流水線減少檔案等待的延時

          5)能用rsh、ssh或直接連接埠做為傳輸入連接埠

          6)支援匿名rsync同步檔案,是理想的鏡像工具

     rsync命令的用法:

          基本格式:rsync [選項] 原始位置  目標位置

          常用選項:

               -a:歸檔模式,遞迴保留對象屬性,等同於-rlptgoD

               -v:顯示同步過程的詳細資料(ver)

               -z:在傳輸檔案時進行壓縮

               -H:保留永久連結檔案

               -A:保留ACL屬性資訊

               --delete:刪除目標位置有而原始位置沒有的檔案

               -r:遞迴模式,包含目錄及子目錄中所有檔案

               -l:對於符號串連檔案仍然複製為符號串連檔案

               -p:保留檔案的許可權標記

               -t:保留檔案的時間標記

               -g:保留檔案的屬組標記(僅超級使用者使用)

               -o:保留檔案的屬主標記(僅超級使用者使用)

               -D:保留裝置檔案及其他特殊檔案

     伺服器端:同步源

     用戶端:發起端

     同步源的搭建方式:ssh或rsync

     存取控制清單:

          setfacl:設定特殊許可權

                   -m   添加許可權

                   -x   刪除一條特殊許可權

                   -b   刪除所有特殊許可權

                   -R   遞迴

                   default   設定預設許可權(對未來建立的檔案也生效)

二、利用SSH搭建同步源

      1、伺服器端:

          1)建立同步目錄,如:mkdir /var/ssh

          2)建立測試檔案,如:touch /var/ssh/ssh.txt

          3)設定許可權,如:

               useradd a1  #用來上傳

               useradd a2  #用來下載

               chown a1:a1 /var/ssh

     2、用戶端:

          1)建立同步目錄,如:mkdir /ssh

          2)同步伺服器資料,如:rsync -avz [email protected]:/var/ssh/* /ssh

三、利用rsync搭建同步源

     1、伺服器端:

          1)建立同步目錄,如:mkdir /var/rsync

          2)建立測試檔案,如:touch /var/rsync/rsync.txt

          3)建立主設定檔,如:

               vim /etc/rsyncd.conf

                    use chroot = yes

                    address = 伺服器IP地址    #監聽地址

                    port 873                 #監聽連接埠

                    log file = /var/log/rsyncd.log  #記錄檔

                    pid file = /var/run/rsyncd.pid  #pid檔案

                    [share]                         #共用目錄名

                         comment = rsync share directory    #描述資訊

                         path = /var/rsync          #真實目錄

                         read only = yes            #唯讀

                         dont compress = *.gz *.bz2  #這兩種格式的檔案傳輸過程中不壓縮

                         auth users = aa             #允許登入使用者

                         secrets file = /etc/rsyncd_users.db    #使用者密碼檔案

          4)建立賬戶檔案:

               vim /etc/rsyncd_users.db

                    aa:123456

          5)開啟服務:rsync --daemon

          6)關閉服務:kill $(cat "/var/run/rsyncd.pid")

     2、用戶端

          1)建立同步目錄,如:mkdir /rsync

          2)同步伺服器資料,如:

               rsync -avz [email protected]::share /rsync

               rsync -avz rsync://[email protected]/share /rsync

     

四、同步指令碼

     1、基於SSH的遠程同步伺服器:

          用戶端:ssh-keygen -t rsa         #產生公開金鑰和私密金鑰檔案

                 ssh-copy-id [email protected]  #將公開金鑰檔案上傳到伺服器端

                 ssh [email protected]         #測試金鑰組是否成功

                 rsync -avz [email protected]:/var/ssh/* /ssh   #測試同步是否成功

     2、基於rsync的遠程同步伺服器:

          用戶端: export RSYNC_PASSWORD=123456  #聲明全域變數,儲存串連使用者的密碼

                  rsync -avz [email protected]::share /rsync  #測試同步是否成功

五、自動備份

     inotify

     兩個組件:inotifywait:持續監控,一有變化,立即輸出結果

              inotifywatch:收集檔案系統變化情況,並在運行結果後輸出匯總的變化情況

     修改核心參數:

               max_queued_events    監控隊列

               max_user_instances   最多監控執行個體數

               max_user_watches     每個執行個體最多監控檔案數

     1、單向同步

          1)rsync同步源:指備份操作的遠程伺服器,也稱為備份源。主要包括兩種:rsync源、ssh源

          2)編輯核心

               vim /etc/sysctl.conf  添加如下內容

                fs.inotify.max_queued_events = 16384

                fs.inotify.max_user_instances = 1024

                fs.inotify.max_user_watches - 1048576

               sysctl -p    #檢查sysctl.conf設定檔是否正確

          3)inotifywait -mrq -e modify,create,move,delete /var/www/html

               -m  持續監控

               -r  監控所有子物件

               -q  簡化輸出

               -e  指定監控的事件類型

          4)編寫指令碼,當監控到資料變化時自動同步

               vim rsync.sh

                    #!/bin/bash

                    INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html" 

                    RSYNC_CMD="rsync -avz --delete /var/www/html [email protected]:/var/www/html" 

                    do

                         if [ $(pgrep rsync | wc -l) -le 0 ] 

                              then 

                                   $RSYNC_CMD

                         fi

                    done

     2、雙向同步   

          1)保證兩台伺服器之間可以通過ssh無密碼訪問,操作如下(這裡以root使用者為例):

         分別在server1(192.168.1.1)和server2(192.168.1.2)下,建立密鑰

               server1:

                    ssh-keygen -t rsa

                    ssh-copy-id 192.168.1.2

               server2:

                    ssh-keygen -t rsa

                    ssh-copy-id 192.168.1.1 

          分別在兩台機器上執行如下測試:

               ssh 192.168.1.1

               ssh 192.168.1.2

          2)安裝unison

               首先安裝ocaml,版本至少為3.07或更高

               :http://caml.inria.fr/pub/distrib/ocaml-3.10/

               tar -zxf ocaml-3.10.2.tar.gz

               cd ocaml-3.10.2

               ./configure

               make world opt

               make install

               

               安裝unison

               :http://www.seas.upenn.edu/~bcpierce/unison//download/releases/unison-2.13.16/

               tar -zxf unison-2.13.16.tar.gz

               cd unison-2.13.16

               make UISTYLE=text THREADS=true STATIC=true

               cp unison /usr/local/bin

          

               安裝inotify

               :http://inotify-tools.sourceforge.net

               tar xvf inotify-tools-3.14.tar.gz
               cd inotify-tools-3.14
               ./configure
               make
               make install

               ln -sv /usr/local/lib/libinotify* /usr/lib/

               unison -batch /home/server1/ ssh:192.168.10.2//home/server2

               #測試兩台伺服器之間是否可以同步檔案

     

          3)編寫自動同步指令碼 

               server1上建立指令碼unison.sh

               vim /root/unison.sh

                    #!/bin/bash

                    ip2="192.168.1.2"

                    src2="/server1/" 

                    drt2="/server2/"

                    /usr/local/bin/inotifywait -mrq -e create,delete,modify,move $src2 | while read line

                    do 

                         /usr/local/bin/unison -batch $src2 ssh://$ip2/$drt2

                         echo -n "$line" >> /var/log/inotify.log

                         echo $(date | cut -d " " -f1-4 )   >> /var/log/inotify.log

                    done

               chmod a+x /root/unison.sh

               server2上建立指令碼unison.sh

               vim /root/unison.sh

                    #!/bin/bash

                    ip1="192.168.1.1"

                    src1="/server2/" 

                    drt1="/server1/"

                    /usr/local/bin/inotifywait -mrq -e create,delete,modify,move $src1 | while read line

                    do 

                         /usr/local/bin/unison -batch $src1 ssh://$ip1/$drt1

                         echo -n "$line" >> /var/log/inotify.log

                         echo $(date | cut -d " " -f1-4 )   >> /var/log/inotify.log

                    done

               chmod a+x /root/unison.sh

               


本文出自 “Linux營運” 部落格,請務必保留此出處http://jinghsy.blog.51cto.com/7648537/1661845

linux系統rsync伺服器的管理與配置

聯繫我們

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