CentOS7之Rsync+Inotify架構實現實時同步文件和文件夾


  該實驗是為了實現服務器S上的文件夾內容變動后,自動同步到服務器C上,使兩個服務器S和C文件內容保持一致.原理是當inotify監聽到文件內容變動后,自動調用rsync進行文件和文件夾的同步.

系統:Centos7.3

服務器S:192.168.2.128  #需要同步內容的服務器,我們簡稱為S

客戶端C:192.168.2.137  #等待同步內容的服務器,我們簡稱C

我們的最終目的是實現,將S上的內容實時同步到C上

 

1.下載inotify-tools並上傳到服務器S

下載地址

https://github.com/rvoicilas/inotify-tools/wiki

 二:關閉防火牆和selinux

在S和C上分別執行:
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i "s/enforcing/disabled/" /etc/selinux/config

 

三:配置S

在服務器S上執行以下操作
yum install rsync gcc -y
#設置目錄

vi /etc/rsyncd.conf  #文件內容如下

[node1]           #模塊名,可自定義,用來標志和識別rsync同步目錄,建議和path的值目錄名一致,方便記憶
        path = /node1                 #我們需要同步的目錄,這里我假設為node1
        auth user = rsync_backup      #指定用戶同步,建議在系統里也添加這個用戶,並指定該用戶位node1的擁有者
        secrets file = /etc/rsyncd.secrets      #指定保存用戶密碼文件

mkdir /node1

useradd rsync_backup  #添加rsync用戶用於同步

chown -R rsync_backup:rsync_backup  /node1  #修改文件夾擁有者

rsync --daemon  #啟動服務

netstat -anpt|grep 873  #查看rsync是否正常啟動

echo "rsync_backup:123456" >/etc/rsyncd.secrets

chmod 600 /etc/rsyncd.secrets

touch /node1/file{1..3}

tar -zxvf inotify-tools*

rm -rf *.gz
cd inotify-tools*
./configure && make && make install

vi /tmp/1.sh

#!/bin/bash
/usr/local/bin/inotifywait -mrq -e modify,create,move,delete,attrib /node1 |while read events   
#-m –monitor始終保持事件監聽狀態 -r –recursive遞歸查詢目錄,-q –quiet打印監控事件的信息,-e –event指定刪、增、改等事件 do rsync -a --delete /node1 這里輸入服務器C的IP::node2
#-a歸檔模式,表示以遞歸方式傳輸文件,並保持所有文件屬性,等價於 --delete 刪除那些接收端還有而發送端已經不存在的文件
echo "`date +'%F %T'` 出現事件 $events" >>/tmp/rsync.log 2>&1 done

 

四:配置C

配置服務器C
yum install rsync -y
vi /etc/rsyncd.conf #修改文件內容

[node2]
path=/node2/
read only=false
uid=rsync_backup
gid=rsync_backup

useradd rsync_backup  #添加rsync用戶用於同步

mkdir /node2

chown -R rsync_backup:rsync_backup  /node2  #修改文件夾擁有者
rsync --daemon
netstat -tlnp|grep 873

五:測試同步功能
在服務器S上執行以下操作
nohup sh /tmp/1.sh &   #執行該1.sh腳本,啟動監聽,當S上有內容變動時,會自動同步到C上

嘗試在服務器S上創建一個文件
echo "aaa">>/node1/file1

那么在服務器C上也會自動在對應位置上生產該新文件

 

 

 左上->S,右上->C,右下->S  nohup.out可以查看相關的執行日志,也可以看/tmp/rsync.log.可以看到,我在右下角終端創建一個a文件夾,左上終端就會有相關的日志更新,同時,右上角終端可以看到C上同時生成了a文件夾

以上,就是這次實驗全過程,成功達到目的.

但是還有一個缺點,就是左上角終端日志中提示的警告,提示chgrp操作有異常,不過沒有影響同步.我嘗試這chown修改目錄擁有者,但是這個只對已存在文件有效,對后面新建的文件夾依然無效,找到原因后我再和大家分享一下.

 

PS:以上內容已經過二次整理修改,已可實現我們的實驗目的,部分細節我后續再進行更新.


免責聲明!

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



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