官术网_书友最值得收藏!

3.3 Rsync功能應用拓展

3.3.1 多模塊復制應用

前文講述的拉取數(shù)據(jù)訪問的都是服務器端的/backup目錄,那么,能不能同時從其他指定目錄下拉取呢?答案是肯定的。

修改rsyncd.conf配置實現(xiàn)多模塊配置

1)最簡單的實現(xiàn),可以在配置文件結(jié)尾加如下內(nèi)容(特殊底紋部分):

        [root@backup ~]# cat /etc/rsyncd.conf
        #rsync_config____________start
        #created by oldboy
        #site: http://www.oldboyedu.com
        uid = rsync
        gid = rsync
        use chroot = no
        fake super = yes
        max connections = 200
        timeout = 600
        pid file = /var/run/rsyncd.pid
        lock file = /var/run/rsync.lock
        log file = /var/log/rsyncd.log
        ignore errors
        read only = false
        list = false
        hosts allow = 172.16.1.0/24
        hosts deny = 0.0.0.0/32
        auth users = rsync_backup
        secrets file = /etc/rsync.password
        [backup]
        comment = welcome to oldboyedu backup.
        path = /backup/
        [data]          #<==新模塊。
        path = /data/  #<==新備份目錄。
        #除了增加以上兩行命令外,讀者也可以設定更多的獨立配置參數(shù),如獨立虛擬用戶、獨立密碼文件等。

2)建立目錄并授權(quán)。

        [root@backup ~]# mkdir -p /data
        [root@backup ~]# chown -R rsync.rsync /data
        [root@backup ~]# ls -ld /data
        drwxr-xr-x 2 rsync rsync 6 4月  16 10:04 /data

3)重啟Rsync服務(只要修改配置,就考慮重載服務)。

        [root@backup ~]# systemctl restart rsyncd

4)從客戶端訪問測試。

        [root@nfs01 /data]# touch oldboy.txt
        [root@nfs01 /data]# rsync -avz /data   rsync_backup@172.16.1.41::data
        sending incremental file list
        data/
        data/oldboy.txt
        sent 123 bytes   received 47 bytes   340.00 bytes/sec
        total size is 0   speedup is 0.00

5)然后在服務端查看。

        [root@backup ~]# ls /data
        data

3.3.2 排除指定目錄和文件數(shù)據(jù)復制

1.實踐準備工作(Rsync服務器端操作)

        [root@backup ~]# cd /backup
        [root@backup backup]# mkdir {a..d}
        [root@backup backup]# touch a/1 b/2 c/3 d/4
        [root@backup backup]# tree /backup/
        /backup/
        |-- a
        |    '--1
        |-- b
        |    '--2
        |-- c
        |    '--3
        '-- d
            '--4

我們建立了a、b、c、d 4個目錄,目錄下的文件分別為1、2、3、4,其中/backup目錄為Rsync服務器端指定的備份同步目錄。

2.實踐復制數(shù)據(jù)并排除指定目錄和文件

本節(jié)以在Rsync客戶端(nfs01:172.16.1.31)上執(zhí)行拉取文件的操作,即從服務器端同步文件到客戶端為例進行講解,推送的方式是一樣的。

方法一:通過Rsync客戶端命令加命令行參數(shù)實現(xiàn)

同步數(shù)據(jù)過程中,假定要排除a、c目錄(包括內(nèi)部文件)及b目錄下的2文件,其他同步,實踐操作過程如下:

        [root@nfs01~]# ls -l /mnt
        total 0
        [root@nfs01~]# rsync --exclude=a --exclude=b/2--exclude=c -avzrtopgP \
        rsync_backup@172.16.1.41::backup/ /mnt   --password-file=/etc/rsync.password
        receiving file list ...
        4 files to consider
        ./
        b/
        d/
        d/4
                    0100%     0.00kB/s     0:00:00 (xfer#1, to-check=0/4)
        sent 174 bytes   received 197 bytes   247.33 bytes/sec
        total size is 0   speedup is 0.00
        [root@nfs01~]# tree /mnt
        /mnt
        |-- b
        '-- d
            '--4
        2 directories, 1 file

通過rsync同步的過程及使用tree命令可以清晰地看出僅b目錄本身和d目錄及內(nèi)部的文件同步過來了。這正是預想的結(jié)果,因此在rsync命令的參數(shù)的大家庭中,又可以融入兩個命令參數(shù)。

        --exclude=PATTERN          #<==表示分別排除匹配上的文件信息。
        --exclude-from=FILE        #<==表示將要匹配的文件或目錄信息匯總寫入到一個文件中。

排除文件的編寫形式如下,以上文中利用--exclude參數(shù)排除文件和目錄的方式為例,如果改為--exclude-from的排除方法,排除文件的命令如下:

        [root@nfs01~]# vim exclude-file.txt
        a
        b/2
        c
        [root@nfs01~]# rsync --exclude-from=./exclude-file.txt -avzP \
        rsync_backup@10.0.0.19::oldboy/ /mnt/ --password-file=/etc/rsync.password
        receiving incremental file list
        ./
        b/
        d/
        d/4
                    0100%     0.00kB/s     0:00:00 (xfer#1, to-check=0/4)
        sent 117 bytes   received 196 bytes   626.00 bytes/sec
        [root@nfs01~]# tree /mnt
        /mnt
        |-- b
        '-- d
            '--4
        2 directories, 1 file

方法二:通過在服務器端配置rsyncd.conf參數(shù)實現(xiàn)

注意:在Rsync服務器端[IP為10.0.0.41]上執(zhí)行操作。

vi /etc/rsyncd.conf修改為如下配置:

        exclude=a c b/2
        說明:僅增加了一行 內(nèi)容為:exclude=a c b/2, exclude為排除目錄或文件的參數(shù),表示排除a、
              c目錄及b目錄的2文件。文件和目錄之間用空格隔開,所有目錄及文件為相對于模塊的目錄。

執(zhí)行重啟命令后測試,結(jié)果依然是僅b目錄本身和d目錄及內(nèi)部的文件同步過來了。

客戶端rsync命令排除總結(jié)

1)利用客戶端rsync命令排除單個文件的命令如下:

        rsync -avz --exclude=a /data1/ rsync_backup@172.16.1.41::oldboy   --password-
            file=/etc/rsync.password

2)利用客戶端rsync命令排除多個文件的命令如下:

        rsync  -avz  --exclude={a, b}  /data1/  rsync_backup@172.16.1.41::oldboy
            --password-file=/etc/rsync.password
        rsync  -avz  --exclude=a  --exclude=b  /data1/  rsync_backup@172.16.1.41::oldboy
            --password-file=/etc/rsync.password
        rsync  -avz  --exclude={a..g}  /data1/  rsync_backup@172.16.1.41::oldboy
            --password-file=/etc/rsync.password

從文件中排除文件的命令如下:

        rsync -avz --exclude-from=paichu.log /data1/ rsync_backup@172.16.1.41::oldboy
            --password-file=/etc/rsync.password

3)在服務器端指定排除參數(shù)的寫法是:在/etc/rsyncd.conf里加exclude=a b test/oldboy.txt參數(shù)及要排除的文件,不推薦在服務器端進行配置,不靈活。

3.3.3 主機之間數(shù)據(jù)無差異復制說明

要實現(xiàn)這種同步方式就要使用Rsync的--delete參數(shù)了。所謂的無差異復制,就是不管是拉取還是推送,都要保持兩邊的數(shù)據(jù)完全一致,如圖3-5所示。

圖3-5 Rsync無差異復制示意圖

1)本地推送式刪除示例如下。

        mkdir null
        rsync -avzP --delete null/ /mnt/  #<==null為空,因此/mnt內(nèi)的數(shù)據(jù)都會被刪。

2)拉取數(shù)據(jù)無差異同步方式的命令如下。

        rsync -avz --delete rsync_backup@172.16.1.41::backup /test/ --password-file=/
            etc/rsync.password
        #<==BACKUP服務器端沒有的數(shù)據(jù),/test里有的都會刪除,和BACKUP模塊里的保持一致。

拉取方式表示遠程服務器端變化的文件,如刪除了文件,那么,本地客戶端的數(shù)據(jù)要保持和服務器端一致,即服務器端刪除了什么內(nèi)容,本地客戶端就會刪除什么內(nèi)容,始終和服務器端保持數(shù)據(jù)一致。

這個命令非常危險,使用不當會造成本地目錄及文件,甚至是/根目錄數(shù)據(jù)丟失。因此要特別注意小心使用。

3)推送數(shù)據(jù)無差異同步方式的命令如下。

        rsync -avz --delete /test/ rsync_backup@172.16.1.41::backup --password-file=/
            etc/rsync.password

推送方式表示本地客戶端變化的文件,如刪除了文件,那么,遠程服務器端的數(shù)據(jù)要保持和客戶端數(shù)據(jù)一致,即本地客戶端刪除什么內(nèi)容,服務器端就會刪除什么內(nèi)容,始終和客戶端保持數(shù)據(jù)一致。該命令同樣非常危險,使用不當會造成遠程服務器端目錄及文件丟失。因此要特別注意小心使用。

針對無差異同步--delete拉取和推送知識總結(jié)及生產(chǎn)場景應用。

1)Rsync推送企業(yè)工作場景:數(shù)據(jù)備份、上傳。

本地有什么,遠端就有什么,本地沒有的遠端有也要刪除,這會造成服務器端的目錄數(shù)據(jù)丟失,備份和上傳場景下一般不需要--delete功能,除非是像NFS實時復制數(shù)據(jù)到備份服務器上必須要保持兩邊一致的情形。

2)Rsync拉取企業(yè)工作場景:代碼發(fā)布、下載。

遠端有什么,本地(客戶端)就有什么,遠端沒有的本地有也要刪除。這會造成本地目錄數(shù)據(jù)丟失。適用于無差異復制的兩臺服務器之間,要求數(shù)據(jù)必須一致,且實時性又不是很高的情況,如兩臺負載均衡下面Web服務器之間的同步,或者高可用雙機配置之間的同步、NFS共享數(shù)據(jù)的實時復制等。Rsync無差異同步非常危險,而且有很多的替代方案,因此,生產(chǎn)場景沒有特殊的需求,應避免使用。寫了這么多內(nèi)容的目的是警告讀者,這個參數(shù)很危險,請慎用,切記。

3.3.4 Rsync斷點續(xù)傳和限速功能(了解)

1)Rsync在傳輸時支持大文件斷點續(xù)傳,相關參數(shù)如表3-12所示。

表3-12 Rsync大文件斷點續(xù)傳相關參數(shù)

默認情況下,利用rsync命令進行大文件數(shù)據(jù)傳輸時,不加上斷點傳輸參數(shù),在傳輸中斷后,會發(fā)現(xiàn)部分傳輸?shù)臄?shù)據(jù)信息會被刪除。加上斷點傳輸參數(shù),在傳輸中斷后,會發(fā)現(xiàn)部分傳輸?shù)臄?shù)據(jù)信息依舊存在。

        rsync -avz --partial /tmp/data.txt 172.16.1.41:/backup

加上斷點傳輸指定目錄參數(shù),在傳輸中斷后,會發(fā)現(xiàn)部分傳輸?shù)臄?shù)據(jù)信息會保存在指定目錄中。

        rsync -avz --partial-dir=/tmp/ /tmp/data.txt 172.16.1.41:/backup

測試結(jié)果省略。

2)rsync命令還可以實現(xiàn)限速傳輸,相關參數(shù)如表3-13所示。

表3-13 rsync命令限速傳輸相關參數(shù)

某上市公司,白天高峰期某DBA人員從數(shù)據(jù)庫服務器通過rsync將上百GB數(shù)據(jù)復制到備份服務器,導致數(shù)據(jù)庫服務器帶寬占滿,造成用戶無法訪問網(wǎng)站。其實可以利用rsync限速功能,將復制速度限制在剩余帶寬的1/3或者1/2,可能就不會出現(xiàn)上述故障了,當然,高峰期最好不要做大數(shù)據(jù)復制行為,這里利用限速功能模擬測試。

        [root@oldboy backup]# dd if=/dev/zero of=test1 bs=1M count=128
        記錄了128+0 的讀入
        記錄了128+0 的寫出
        134217728字節(jié)(134 MB)已復制,4.83399 秒,27.8 MB/秒
        # 不限速的傳輸速率信息
        [root@oldboy  backup]#  rsync  -avzP  /backup/  rsync://rsync_backup@172.16.1.41/
            backup \
        --password-file=/etc/rsync.password
        sending incremental file list
        ./
        test1
            134217728100%    83.97MB/s     0:00:01 (xfer#1, to-check=0/11)
        sent 130687 bytes   received 30 bytes   10457.36 bytes/sec
        total size is 134217728   speedup is 1026.78
        # 限速的傳輸速率信息
        [root@oldboy  backup]#  rsync  -avzP  --bwlimit=100  /backup/  rsync://rsync_
            backup@172.16.1.41/backup
        --password-file=/etc/rsync.password
        sending incremental file list
        ./
        test1
            134217728100%    67.74MB/s     0:00:01 (xfer#1, to-check=0/11)
        sent 130687 bytes   received 30 bytes   15378.47 bytes/sec
        total size is 134217728   speedup is 1026.78
        說明:貌似沒有起到什么效果,為什么呢,因為設置的限制速率已經(jīng)遠遠大于默認的傳輸速率,應該設置得
              更小一些。
        [root@oldboy  backup]#  rsync  -avzP  --bwlimit=1  /backup/  rsync://rsync_
            backup@172.16.1.41/backup \--password-file=/etc/rsync.password
        sending incremental file list
        ./
        test1
            134217728100%     1.02MB/s     0:02:05 (xfer#1, to-check=0/11)
        sent 130687 bytes   received 30 bytes   1001.66 bytes/sec
        total size is 134217728   speedup is 1026.78
        說明:將設置的限速速率調(diào)小一些,傳輸限制的效果隨即顯示出來
主站蜘蛛池模板: 轮台县| 五原县| 河西区| 遵义县| 晋江市| 金川县| 莫力| 福清市| 新乡市| 德令哈市| 泉州市| 祥云县| 收藏| 利辛县| 特克斯县| 龙井市| 广东省| 绥宁县| 双牌县| 平阴县| 阜南县| 皮山县| 思茅市| 石棉县| 北票市| 青浦区| 永德县| 江阴市| 平江县| 闵行区| 麻栗坡县| 密山市| 上思县| 贺州市| 谢通门县| 新丰县| 贵阳市| 郎溪县| 遵义县| 红桥区| 潼关县|