Rsync遠程同步


1.備份的基礎概念知識

  1.什么是備份?

    備份就是把自己認為重要的文件復制一份存放起來 (給源文件增加一個 副本)

  2.為什么要備份?

    數據比較重要

    防止出現故障(軟件故障 認為故障占比80%) 能保證快速恢復整個系統的運轉

  3.能不能不備份?

    可以 對於自己絕對不重要的文件  可以不備份

  4.備份通常使用什么工具?

    本地備份  cp

    遠程備份  scp  rsync

  

2.什么是rsync

    rsync簡稱遠程同步 可以實現不同主機之間的同步 同時支持增量和全量的備份

      不同主機  windows-->linux  linux-->linux  macos-->linux macos-->windows

 

3.rsync是如何實現的備份

    全量:完全備份 效率低

    增量:差異備份 效率高

 

4.rsync使用場景

    rsync數據傳輸模式:push推   lull拉

      推(上傳):客戶端將需要備份的文件發送到服務器

      拉(下載):客戶端從服務端下載需要的文件

    rsync數據傳輸模式-->問題

      推(下載):如果機器過多 容易造成推送數據緩慢

      拉(下載):如果客戶端過多 會造成服務端壓力過大

    比如:現在有20台計算機 怎么有效的緩解推送和拉取問題

      多服務器使用場景

      異地備份

 

5.rsync傳輸模式

    三種傳輸模式:

      1.本地傳輸  cp

      2.遠程傳輸  scp

      3.守護進程  進程放在后台運行--->進程

    Local:  rsync [OPTION...] SRC...   [DEST]

        命令 選項      源文件    目標位置

PS:不支持推送和拉取 單純的復制  cp命令本地備份是覆蓋形式而 rsync是差異形式

 

  Access via remote shell: (基於ssh協議)

  文件

    上傳  Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

    [root@nfs ~]# tsync -avz ./lisong.txt root@172.16.1.41:/opt/

    推送本地文件至172.16.1.41服務器的/opt目錄下 使用41的root用戶完成此操作

    下載  Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]

    [root@nfs ~]# rsync -avz root@172.16.1.41:/opt/lisong.txt ./

    下載172.16.1.41服務器opt目錄下的lisong.txt文件至本地當前目錄使用root用戶完成此操作

 

  目錄

    上傳  

    1.[root@nfs ~]# rsync -avz /etc/ root@172.16.1.41:/opt

    推送etc下面的所有文件到172.16.1.41服務器的opt目錄下

    2.[root@nfs ~]# rsync -avz /etc root@172.16.1.41:/opt

    推送etc整個目錄到172.16.1.41服務器的opt目錄下

 

  例:nfs推送/etc目錄到backup服務器上面名字叫(etc-nfs-172.16.1.31-今天時間)

    rsync -avz /etc root@172.16.1.99:/root/etc-nfs-172.16.1.31-$(date +%F)

    web推送/etc目錄到backup服務器上面名字叫(etc-web-172.16.1.7)

    rsync -avz /etc root@172.16.1.99:/root/etc-web-172.16.1.7

 

下載:遠程同步弊端

  1.需要使用系統的用戶

    root 權限太高

    普通用戶 權限不足

 

6.守護進程 將程序運行在后台

  Access via rsync daemon:
      Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
      Push: rsync [OPTION...] SRC... [USER@]HOST::DEST

 

  安裝

    yum install -y rsync

  配置

    查詢配置文件:rpm -qc rsync

      /etc/rsyncd.conf
      /etc/sysconfig/rsyncd

    編寫配置文件:vim /etc/rsyncd.conf

      加入以下配置

        uid = rsync
        gid = rsync
        port = 873
        fake super = yes
        use chroot = no
        max connections = 200
        timeout = 600
        ignore errors
        read only = false
        list = false
        auth users = rsync_backup
        secrets file = /etc/rsync.passwd
        log file = /var/log/rsyncd.log
        #####################################
        [backup]
        comment = welcome to oldboyedu backup!
        path = /backup

 

    解釋:

      配置詳解

      uid = rsync                          # 運行進程的用戶
      gid = rsync                        # 運行進程的用戶組
      port = 873                            # 監聽端口
      fake super = yes                  # 無需讓rsync以root身份運行,允許接收文件的完整屬性
      use chroot = no                          # 禁錮推送的數據至某個目錄, 不允許跳出該目錄
      max connections = 200              # 最大連接數
      timeout = 600                        # 超時時間
      ignore errors                       # 忽略錯誤信息
      read only = false                    # 對備份數據可讀寫
      list = false                         # 不允許查看模塊信息
      auth users = rsync_backup        # 定義虛擬用戶,作為連接認證用戶
      secrets file = /etc/rsync.passwd # 定義rsync服務用戶連接認證密碼文件路徑
      [backup]                      # 定義模塊信息
      comment = commit             # 模塊注釋信息
      path = /backup               # 定義接收備份數據目錄

 

  1.需要創建一個rsync進程運行時使用的普通用戶---->rsync

      useradd rsync -M -s /sbin/nologin

      -M 不創建家目錄

      -s  指定用戶的登錄方式

  2.服務端需要定義一個客戶端鏈接時的虛擬用戶和密碼

      echo "rsync_backup:123456" > /etc/rsync.passwd

      chmod 600 /etc/rsync.passwd

      此文件必須是600權限

  3.准備模塊定義好的目錄 客戶端的數據都存放在該目錄下

      mkdir /backup

      chomn -R rsync.rsync /backup/

  4.啟動rsync並加入開機自啟

      systemctl start rsyncd

      systemctl enable rsyncd

      systemctl status rsync

  5.檢查rsync的進程\端口

      pa aux | grep rsync

      netstat -lntp | grep 873

  6.客戶端測試

      backup屬於服務端--->百度網盤

      nfs屬於客戶端--->PC電腦

 

  推送數據:
   Push: rsync [OPTION...] SRC... [USER@]HOST:DEST    #遠程連接方式:路徑
   Push: rsync [OPTION...] SRC... [USER@]HOST::DEST   #守護進程方式::模塊名稱rsync -          

     avz lisong.txt rsync_backup@172.16.1.99::backup

       將客戶端的lisong.txt推送到99服務器的backup模塊下 使用rsync_backup虛擬用戶認證

  下載數據:

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

     rsync -avz rsync_backup@172.16.1.99::backup/lisong.txt ./

     將服務端的backup模塊下的lisong.txt文件下載到本地的當前目錄下使用虛擬用戶認證

     rsync -avz rsync_backup@172.16.1.99::backup ./

     將服務器的backup模塊下的所有文件下載到本地的當前目錄使用虛擬用戶認證

 

1.無差異同步

     客戶端---->push--->服務端   以客戶端為准

     rsync -avz /root/ rsync_backup@172.16.1.99::backup

     上傳root目錄下的所有文件到99服務器的backup模塊下

     rsync -avz /root/ --delete rsync_backup172.16.1.99::backup

     上傳root目錄下的所有文件到99服務器的backup模塊下並保持服務器的文件與客戶端一致

      客戶端--->pull--->服務端   以服務端為准

     rsync -avz rsync_backup@172.16.1.41::backup ./

     下載99服務器上面backup模塊下的所有文件到當前目錄下

     rsync -avz --delete rsync_backup@172.16.1.41::backup ./

     下載99服務器上面backup模塊下的所有文件到當前目錄下並保持文件與服務端一致

 

2.對同步進行限速100MB * = 800兆 --dwlimit MB * 8 = 實際帶寬100MB

  模擬環境創建一個大小500M的文件

    dd if=/dev/zero of=./size.disk bs=1M count=500

  測試

    rsync -avzP --bwlimit 1 ./size.disk rsync_backup@172.16.1.99::backup

    -P 顯示傳輸速度

    傳輸指定文件到99服務器的backup模塊下限制傳輸速度為1MB

 

3.排除不同的文件

  使用命令:--exclude=          #指定某個文件

       --exclude-from   #指定某個文件里面要排除的文件

  rsync -avz /root/ --exclude=size.disk rsync_backup@172.16.1.99::backup

  上傳root目錄下的所有文件到99服務器的backup模塊下並排除size.bisk文件

  rsync -avz /root/ --exclude-from peichu.txt rsync_backup@172.16.1.99::backup

  上傳root目錄下的所有文件到99服務器的backup模塊下並排除peichu.txt文件里面寫的文件名

 

4.客戶端免密傳輸

  方式一:--password-file

  模擬環境創建:

  echo "123456" > /etc/rsync.pass

  chmod 600 /etc/rsync.pass

  測試:

  rsync -avz /root/ rsync_backup@172.16.1.99::backup --password-file=/etc/rsync.pass

  傳輸root目錄下的所有文件到99服務器的backup模塊下 指定密碼文件位置實現免密傳輸

  方式二:export RSYNC_PASSWORD="密碼"  只在本中斷生效"臨時生效"

  rsync -avz /root/ rsync_backup@172.16.1.99::backup

  傳輸root目錄下的所有文件到99服務器的root目錄下通過上面指定的密碼實現臨時免密傳輸

  

7.rsync相關參數:
 -a           #歸檔模式傳輸, 等於-tropgDl
 -v           #詳細模式輸出, 打印速率, 文件數量等
 -z           #傳輸時進行壓縮以提高效率
 -r           #遞歸傳輸目錄及子目錄,即目錄下得所有目錄都同樣傳輸。
 -t           #保持文件時間信息
 -o           #保持文件屬主信息
 -p           #保持文件權限
 -g           #保持文件屬組信息
 -l           #保留軟連接
 -P           #顯示同步的過程及傳輸時的進度等信息
 -D           #保持設備文件信息
 -L           #保留軟連接指向的目標文件
 -e           #使用的信道協議,指定替代rsh的shell程序
 --exclude=PATTERN   #指定排除不需要傳輸的文件模式
 --exclude-from=file #文件名所在的目錄文件
 --bwlimit=100       #限速傳輸
 --partial           #斷點續傳
 --delete            #讓目標目錄和源目錄數據保持一致


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM