Inotify是一種文件系統事件通告機制,可以實時監控文件系統下文件的訪問、修改、刪除等各類變化狀況並將其做爲事件通告給用戶態應用程序。Linux內核從2.6.13版本後已經集成了Inotify的功能,用戶只需安裝inotify應用程序便可實現對文件系統的監控。vim
rpm -qa | grep rsync vim /etc/rsyncd.conf uid = rsync #客戶端進行數據傳輸時所使用的用戶 gid = rsync #客戶端進行數據傳輸時所使用的用戶組 user chroot = no #安全相關 max connections = 200 #最大鏈接數 timeout = 300 #超時時間,客戶端鏈接後300s不傳輸自動斷開 pid file = /var/run/rsyncd.pid #進程號文件 lock file = /var/run/rsync.lock #鎖文件 log file = /var/log/rsyncd.log #日誌文件 ignore errors #忽略錯誤 read only = false #可寫 list = false #客戶端不能ls等進行列表 hosts allow = 172.16.1.0/24 #容許鏈接的主機 #hosts deny = 0.0.0.0/32 #拒絕的主機 auth users = rsync_backup #客戶端登陸帳號名 secrets file = /etc/rsync.password #密碼文件,用於驗證 [backup] #模塊名稱 path = /backup/ #提供訪問的目錄 [nfsbackup] path = /nfsbackup useradd rsync -s /sbin/nologin –M mkdir /backup chown rsync.rsync /backup vim /etc/rsync.password rsync_backup:peterwang chmod 600 /etc/rsync.password rsync --daemon ps -ef | grep rsync | grep -v grep lsof -i :873 echo "/usr/bin/rsync --daemon" >> /etc/rc.local
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo yum install -y inotify-tools vim /etc/rsync.password peterwang chmod 600 /etc/rsync.password mkdir /server/scripts -p cd /server/scripts vim inotify.sh #!/bin/bash export PATH=/bin:/usr/bin:/usr/local/bin SRC=/data DEST=nfsbackup IP=172.16.1.41 USER=rsync_backup PASSFILE=/etc/rsync.password inotifywait -mrq --format '%w%f' -e modify,create,move,delete,attrib $SRC \ | while read line do NUM=$(echo $line | grep -o "/" | wc -l) if [ $NUM -gt 2 ];then DIR=$(echo $line | awk -F "/" '{print "/"$2"/"$3}') rsync -az $DIR --delete rsync://$USER@$IP/$DEST --password-file=$PASSFILE else rsync -az $SRC/ --delete rsync://$USER@$IP/$DEST --password-file=$PASSFILE fi done & sh inotify.sh echo "/bin/sh /server/scripts/inotify.sh " >> /etc/rc.local