該實驗是為了實現服務器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:以上內容已經過二次整理修改,已可實現我們的實驗目的,部分細節我后續再進行更新.