遠程同步工具 ---- rsync

遠程同步工具 ---- rsync

前言:

​ rsync(Remote Sync)是linux系統下的數據鏡像備份工具,使用快速增量備份工具rsync可以遠程同步,支持本地複製或其他ssh、rsync主機同步。 rsync使得本地和遠程兩個主機之間的文件達到同步,只傳送兩個文件不同的部分,不像ftp那樣需要全備份。rsync可以根據數據的變化進行差異備份,從而減少數據流量,提高工作效率 。

一、rsync的介紹:

1、特點:

  • 可以鏡像保存整個目錄樹和文件系統;

  • 可以很容易做到保持原來文件的權限、時間、軟硬鏈接等等;

  • 無須特殊權限即可安裝;

  • 快速:第一次同步時 rsync 會複製全部內容,但在下一次只傳輸修改過的文件。rsync 在傳輸數據的過程中可以實行壓縮及解壓縮操作,因此可以使用更少的帶寬。

  • 安全:可以使用scp、ssh等方式來傳輸文件,當然也可以通過直接的socket連接。

  • 支持匿名傳輸,以方便進行網站鏡像

2、rsync同類服務

  • sync 同步:刷新文件系統緩存,強制將修改過的數據塊寫入磁盤,並且更新快。
  • async 異步:將數據先放到緩衝區,再週期性(一般是30s)的去同步到磁盤。
  • rsync 遠程同步

3、rsync主要分爲三個配置文件

  • tsyncd.conf(主配置文件)

  • rsync.secrets(密碼文件)

  • rsyncd.motd(服務器信息文件)

4、rysnc常用選項

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-FZrRU2tP-1585060633050)(C:\Users\xumin\AppData\Roaming\Typora\typora-user-images\1585040405070.png)]

二:實驗步驟

  • 實驗環境

~ 兩臺虛擬機,一臺作爲rsync同步源(192.168.48.128),一臺作爲客戶端(192.168.48.130);
兩臺虛擬機都要安裝rsync 。rsync是系統自帶的,無需安裝,如果虛擬機是最小化安裝的話,需要yum安裝下。
  • 具體步驟

    在同步源服務器上配置

1、安裝httpd服務
[root@rsync ~]# yum install httpd -y
2、修改rsync配置文件
[root@rsync ~]# vim /etc/rsyncd.conf

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-r4uowDi0-1585060633051)(C:\Users\xumin\AppData\Roaming\Typora\typora-user-images\1585043878118.png)]

3、編輯存放賬戶信息的數據
[root@rsync ~]# vi /etc/rsyncd_users.db      ‘添加賬戶與密碼’
backuper:123    授權賬戶:密碼       

[root@rsync ~]# chmod 600 /etc/rsyncd_users.db      ‘權限設置爲100,否則客戶端認證會失敗’
4、啓動sync服務
[root@rsync ~]# rsync --daemon
[root@rsync ~]# netstat -ntap | grep rsync
tcp        0      0 192.168.48.128:873      0.0.0.0:*               LISTEN      3778/rsync
5、在/var/www/html目錄中新建文件
[root@rsync ~]# cd /var/www/html/
[root@rsync html]# vim kg.html
this is kg
[root@rsync html]# vim ac.html
this is ac

這時候服務端的源配置完成了。

在客戶端配置

1、使用rsync備份工具

(用法與cp差不多)

[root@client ~]# rsync /etc/fstab /opt
[root@client ~]# cd /opt
[root@client opt]# ls
fstab  rh
[root@client opt]# rsync -rl /etc/fstab /boot/grub /opt
[root@client opt]# ls
fstab  grub  rh
2、配置源

(兩種方法)

方法1:用戶名@主機地址::共享模塊名

方法2: rsync://用戶名@主機地址/共享模塊名
方法1:[root@client opt]# rsync -avz [email protected]::wwwroot /opt

方法2:[root@client opt]# rsync -avz rsync://[email protected]/wwwroot /opt

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-f5GM56om-1585060633051)(C:\Users\xumin\AppData\Roaming\Typora\typora-user-images\1585052389327.png)]

3、rsync同步操作
[root@client opt]# rsync -avzH --delete [email protected]::wwwroot  /opt/myweb
[root@client opt]# cd myweb/
[root@client myweb]# ls
ac.html  kg.html       ‘看到從rsync服務器同步過來了’
4、rsync免密碼交互
[root@client myweb]# vi /etc/server.pass
123
[root@client myweb]# cat /etc/server.pass
123
[root@client myweb]# chmod 600 /etc/server.pass
[root@client myweb]# rsync -azvH --delete --password-file=/etc/server.pass [email protected]::wwwroot /opt/myweb/     ‘無需輸密碼就可以進入’
[root@client myweb]# ls
ac.html  kg.html
5、添加週期性計劃任務
[root@localhost wwwroot]# crontab -e    ‘每晚11點半對服務器網址目錄更新一次’
30 23 * * * /usr/bin/rsync -az --delete --password-file=/etc/server.pass [email protected]::wwwroot /opt/myweb/

[root@localhost wwwroot]# systemctl restart crond
[root@localhost wwwroot]# systemctl enable crond

三:rsync+inotify實時同步

1、inotify介紹:

(Linux內核的inotify機制)

​ Inotify 是一個 Linux特性,它監控文件系統操作,比如讀取、寫入和創建。Inotify 反應靈敏,用法非常簡單,並且比 cron 任務的繁忙輪詢高效得多 。

  • 從版本 2.6.13 開始提供;
  • 可以監控文件系統的變化情況,並作出通知響應;
  • 輔助軟件:inotify-tools

2、rsync 實時同步:

  • 定期同步的不足:

​ 執行備份的時間固定,延遲明細,實時性差;

​ 當同步源長期不變化時,密集的定期任務是不必要的。

  • 實時同步的優點:

​ 一旦同步源出現變化,立即啓用備份;

​ 只要同步源不變化,則不執行備份。

四、操作步驟

在客戶端配置

1、修改內核參數
[root@client myweb]# vim /etc/sysctl.conf
‘末行添加’
fs.inotify.max_queued_events = 16384        ‘監控隊伍大小’
fs.inotify.max_user_instances = 1024        ‘最多監控實例數 ’
fs.inotify.max_user_watches = 1048576       ‘每個實例最多監控文件數
’
[root@client myweb]# sysctl -p
2、安裝inotify-tools輔助工具

inotifywait:用於持續監控,實時輸出結果
inotifywatch:用於短期監控,任務完成後再出結果

[root@client myweb]# mkdir /abc
[root@client myweb]# mount.cifs //192.168.0.107/share /abc
[root@client abc]# tar zvxf inotify-tools-3.14.tar.gz -C /opt
[root@localhost opt]# cd inotify-tools-3.14/
[root@localhost inotify-tools-3.14]# ./configure
[root@localhost inotify-tools-3.14]# make && make install

[root@localhost ~]# inotifywait -mrq -e modify,create,move,delete  /opt/myweb   ‘監控’
3、通過inotifywait觸發rsync同步操作

​ 使用while、read持續獲取監控結果

[root@client inotify-tools-3.14]# vim /opt/inotify.sh

#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /opt/myweb/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /opt/myweb/ [email protected]::wwwroot"
 
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
    if [ $(pgrep rsync | wc -l) -le 0 ] ; then
        $RSYNC_CMD
#       echo "${FILE} was rsynced" >>/opt/inotify_rsync.log

    fi
done

[root@client opt]# chmod +x inotify.sh    ‘添加權限’
4、 關閉只讀模式,並重啓服務
(在同步源服務器上配置)
[root@localhost html]# vim /etc/rsyncd.conf 

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-UediW9UP-1585060633052)(C:\Users\xumin\AppData\Roaming\Typora\typora-user-images\1585059663735.png)]

[root@rsync html]# kill $(cat /var/run/rsyncd.pid)    ‘關閉rsyncd服務’
[root@rsync html]# rsync --daemon     ‘啓動rsyncd服務’
[root@rsync html]# netstat -anpt |grep rsync
tcp        0      0 192.168.48.128:873      0.0.0.0:*               LISTEN      5785/rsync 
[root@rsync html]# chmod 777 /var/www/html/

一定注意兩邊的同步目錄權限都設置777。

5、在客戶機上操作
[root@localhost ~]# /opt/inotify.sh   ‘執行腳本’
[root@localhost ~]# chmod 777 /opt/myweb/     ‘需要在開一個終端’
[root@localhost ~]# vim /opt/myweb/abcd.html     ‘裏面插入任意數據’

這時在同步源服務器上可以發現多了個文件。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ZRnpXjUw-1585060633052)(C:\Users\xumin\AppData\Roaming\Typora\typora-user-images\1585060484624.png)]
如果在客戶端刪除這個文件,同時源服務器也會同步刪除這個文件的 。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章