Centos 6.5配置rsync+inotify實現文件實時同步
1.安裝rsync(兩臺機器執行相同的步驟)
yum install gcc
yum install rsyncd xinetd -y
由於rsync是由xinetd啓動的,因此須要修改一個配置
vim /etc/xinetd.d/rsync
disable = yes --修改成-->> disable = no
啓動並查看是否啓動成功
/etc/init.d/xinetd restart
netstat -atnp |grep 873
tcp 0 0 :::873 :::* LISTEN 1503/xinetd
2.服務部署
yum install wget -y
wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
注意:須要檢查你的系統是否支持inotify
內核須要在2.6.13以上
uname -r
2.6.32-431.el6.x86_64
而且有以下三個文件
ll /proc/sys/fs/inotify/
total 0
-rw-r--r-- 1 root root 0 Nov 13 19:38 max_queued_events
-rw-r--r-- 1 root root 0 Nov 13 19:38 max_user_instances
-rw-r--r-- 1 root root 0 Nov 13 19:38 max_user_watches
開始編譯安裝inotify
tar zxvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure --prefix=/usr/local/inotify && make && make install
cd /usr/local/inotify
查看一下下面的目錄及文件
ls -l
total 16
drwxr-xr-x. 2 root root 4096 Nov 13 19:42 bin ##inotify執行命令(二進制)
drwxr-xr-x. 3 root root 4096 Nov 13 19:42 include ##inotify程序所需用的頭文件
drwxr-xr-x. 2 root root 4096 Nov 13 19:42 lib ##動態連接的庫文件
drwxr-xr-x. 4 root root 4096 Nov 13 19:42 share ##幫助文檔
工具集合介紹:
一共安裝了2個工具(命令),即inotifywait和inotifywatch
inotifywait:在被監控的文件或目錄上等待特定文件系統事件(open、close、delete等)發生,執行後處於阻塞狀態,適合在shell腳本中使用。
inotifywatch:收集被監視的文件系統使用度統計數據,指定文件系統事件發生的次數統計。
建立一個軟鏈接
ln -s /usr/local/inotify/bin/inotifywait /bin/
經常使用參數:
-r ##遞歸查詢目錄
-q ##打印不多的信息,僅僅打印監控相關的信息
-m ##始終保持事件監聽狀態
--excludei ##排除文件或目錄時,不區分大小寫
--timefmt ##指定時間的輸出格式
配置實時同步目錄:
1.在這咱們經過ssh祕鑰的方法來認證,固然也能夠用rsync指定密碼的形式
在同步端生成ssh祕鑰對
ssh-keygen (直接回車就行)
將生成的公鑰同步到你的被同步機器
scp /root/.ssh/id_rsa.pub 192.168.2.11:/root/.ssh/
須要在被同步機器上將公鑰更名
ls -l /root/.ssh
total 8
-rw------- 1 root root 404 Nov 13 13:48 authorized_keys
或者能夠直接用(這種方法不用更名,詳情可百度密鑰對的配置)
ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.2.11
2.同步端編寫同步的腳本
cat /shell/auto_rsync.sh
#!/bin/bash
/usr/local/inotify/bin/inotifywait -mrq -e modify,delete,create,attrib,move /usr/local/src |while read events
do
rsync -avzP --delete -e 'ssh -p 60820' /usr/local/src/ 172.17.33.188:/usr/local/src
echo "`date +'%Y-%m-%d %H:%M:%S'` 出現事件:$events" >> /shell/auto_rsync.log
done
3.在同步端建立一個abc的文件測試
touch /usr/local/src/abc
4.查看記錄的log日誌會有你剛剛建立的文件
5.在被同步機器上面查看文件或目錄是否同步過去