rsync基礎

網(wǎng)絡服務-RSYNC

  1. rsync一款支持快速完全備份和增量備份工具,支持本地復制,遠程同步等
    rsync一般使用兩種協(xié)議進行數(shù)據(jù)同步:ssh 協(xié)議和rsync協(xié)議

  2. rsync的特性
    能更新整個目錄樹和文件系統(tǒng)
    有選擇性的保留符號鏈接、硬鏈接、文件屬性、權限、設備以及時間等
    對于安裝來說,無任何特殊權限要求
    對于多個文件來說,文件傳輸效率高
    能用ssh或自定義端口作為傳輸入口的端口

  3. rsync工作原理
    既然涉及到數(shù)據(jù)同步,必要的兩個概念是:源地址(文件),目標地址(文件),以及以哪一方為基準
    例如:
    想讓目標主機上的文件和本地文件保持同步,則是以本地文件為同步基準,將本地文件作為源文件推送到目標主機上

    rsync在進行數(shù)據(jù)同步之前需要進行用戶身份驗證,驗證方式取決于使用的連接方式

    ssh登錄驗證模式:使用ssh協(xié)議作為基礎進行用戶身份認證,然后進行數(shù)據(jù)同步
    rsync登錄驗證模式:使用rsync協(xié)議進行用戶身份認證(非系統(tǒng)用戶),然后進行數(shù)據(jù)同步

    數(shù)據(jù)同步方式:推送(上傳)、拉?。ㄏ螺d)

    NFS服務器------------------>rsync服務器(nfs服務器數(shù)據(jù)改變,rsync服務器為了與nfs服務器同步,就會拉取nfs服務器的數(shù)據(jù))
    NFS服務器<------------------rsync服務器(當nfs服務器數(shù)據(jù)丟失,nfs服務器為了與rsync服務器同步,rsync就會推送數(shù)據(jù)到nfs服務器)

  4. rsync實驗演示
    單向數(shù)據(jù)同步實驗:準備兩臺服務器,一臺NFS服務器作為網(wǎng)站的數(shù)據(jù)服務器(基準服務器),另外一臺專門做rsync數(shù)據(jù)備份服務器

4.1 ssh協(xié)議數(shù)據(jù)同步:將NFS服務器數(shù)據(jù)同步備份到rsync服務器
在兩臺服務器分別創(chuàng)建目錄(/filesrc、/filedst)

下行同步(下載)
格式: rsync -avz  服務器地址:/服務器目錄/*   /本地目錄
實例: rsync -avz  root@192.168.88.10:/filesrc/*   /filedst
           -a:歸檔模式,遞歸并保留對象屬性
           -v:顯示同步過程
           -z:在傳輸文件時進行壓縮

[root@dst ~]# mkdir /filedst
[root@src filesrc]# touch {1..5}.txt
[root@dst ~]# rsync -avz root@192.168.88.200:/filesrc/* /filedst/   #在dst服務器上下載src服務器上的文件
[root@dst filedst]# ls
1.txt  2.txt  3.txt  4.txt  5.txt

[root@src filesrc]# rm -rf *   #刪除src服務器上的文件
[root@dst filedst]# rsync -avz /filedst/* root@192.168.88.200:/filesrc/   #在dst服務器上傳文件到src服務器上
[root@src filesrc]# ls           #查看上傳的文件
1.txt  2.txt  3.txt  4.txt  5.txt

注意:使用root用戶進行實驗可以,但在生產(chǎn)環(huán)境中盡量使用單獨創(chuàng)建的普通用戶,減少權限溢出
        創(chuàng)建用來做數(shù)據(jù)同步的用戶,并給予用戶對目錄的相應權限,一般使用ACL權限
[root@src filesrc]# useradd zhangsan
  [root@src filesrc]# passwd zhangsan
  setfacl -m u:zhangsan:rwx /filesrc/
        
  拓展:若實現(xiàn)免密碼數(shù)據(jù)同步,只需要做好ssh密鑰互信即可
        [root@src filesrc]# ssh-keygen 
        [root@src filesrc]# ssh-copy-id root@192.168.88.10
        [root@src filesrc]# rm -rf *
        [root@dst filedst]# ssh-keygen 
        [root@src filedst]# ssh-copy-id root@192.168.88.200
        [root@dst filedst]# rsync -avz /filedst/* root@192.168.88.200:/filesrc/
        [root@src filesrc]# ls
        1.txt  2.txt  3.txt  4.txt  5.txt

4.2 rsync協(xié)議數(shù)據(jù)同步:將NFS服務器數(shù)據(jù)同步備份到rsync服務器
   搭建rsync服務(僅需要在NFS服務器上搭建即可)
   a. 創(chuàng)建主配置文件(/etc/rsyncd.conf)
   
   [root@src ~]# vim /etc/rsyncd.conf
   
   address = 192.168.88.200
   # rsync服務器綁定IP
   
   port 873
   # 默認服務端口873
   
   log file = /var/log/rsyncd.log
  # 日志文件位置
  
  pid file = /var/run/rsyncd.pid
  # 進程號文件位置
  
  [web]
  # 共享名:用來連接是寫在url上的,切記
  
  comment = web directory backup
  # 共享描述話語
  
  path = /filesrc
  # 實際共享目錄
  
  read only = no
  # 是否僅允許讀取
  
  dont compress = *.gz *.bz2
  # 哪些文件類型不進行壓縮
  
  auth users = user1
  # 登錄用戶名(非系統(tǒng)用戶,需要自行創(chuàng)建)
   
   secrets file = /etc/rsyncd_users.db
  # 認證所需賬號密碼文件(需自行創(chuàng)建)

  b. 創(chuàng)建認證所需賬戶密碼文件
  [root@src ~]# vim /etc/rsyncd_users.db
   user1:123456
  [root@src ~]# chmod 600 /etc/rsyncd_users.db 
  
  c. 啟動服務
  [root@src ~]# rsync --daemon
  [root@src ~]# netstat -antp | grep :873
  tcp        0      0 192.168.88.200:873      0.0.0.0:*               LISTEN      32112/rsync 
  
  d. 設置映射用戶對共享目錄有權限(r)
  [root@src ~]# setfacl -m u:nobody:rwx /filesrc/
  注意:關閉服務可使用kill命令,但偶爾會造成服務被結(jié)束,但進程號配置文件不被刪除的問題,可以手動刪除,再啟動則正常(建議寫一個rsync的服務管理腳本)
  
  下行同步(下載)
  格式: rsync -avz  rsync://用戶名@服務器地址/共享模塊名   /本地目錄
  示例: rsync -avz  rsync://user1@192.168.88.200/web  /filedst

  拓展:--delete:刪除本地比服務器多出來的文件(源地址沒有,目標地址有的刪掉)
            rsync -avz --delete rsync://user1@192.168.88.200/web  /filedst

  上行同步(上傳)
  格式:rsync -avz  /本地目錄/* rsync://用戶名@服務器地址/共享模塊名
  示例:rsync -avz  /filedst/* rsync://user1@192.168.88.200/web
  拓展:rsync協(xié)議的免密碼可以借助一個環(huán)境變量實現(xiàn)
  # export RSYNC_PASSWORD=虛擬用戶密碼(客戶端生成)
  
  [root@src filesrc]# touch 6.txt
  [root@src filesrc]# ls
  1.txt  2.txt 3.txt    4.txt 5.txt 6.txt  rsyncd.conf.bak


  [root@dst filedst]# rm -rf *
  [root@dst filedst]# rsync -avz rsync://user1@192.168.88.200/web /filedst/
  [root@dst filedst]# ls
  1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  rsyncd.conf.bak
  [root@dst filedst]# touch 7.txt
  rsync -avz rsync://user1@192.168.88.200/web /filedst/  
  [root@src filesrc]# ls
  1.txt  2.txt 3.txt  4.txt 5.txt 6.txt  rsyncd.conf.bak   #同步不成功沒有7.txt
  [root@dst filedst]# rsync -avz --delete rsync://user1@192.168.0/web /filedst/
  [root@dst filedst]# ls
  1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  rsyncd.conf.bak    #7.txt 被刪除,服務器端沒有的,本地服務器也應該沒有,保持本地與服務器同步一致
  [root@src filesrc]# rm -rf *
  rsync -avz /filedst/* rsync://user1@192.168.88.200/web
  [root@src filesrc]# ls
  1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  rsyncd.conf.bak
  [root@dst filedst]# export RSYNC_PASSWORD=123456
  [root@dst filedst]# rm -rf  *
  [root@dst filedst]# touch {a..f}.txt
  [root@dst filedst]# ls
  a.txt  b.txt  c.txt  d.txt  e.txt  f.txt
  [root@dst filedst]# rsync -avz --delete rsync://user1@192.168.88.200/web /filedst/
  [root@dst filedst]# ls
  1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  rsyncd.conf.bak





  

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容