操做系統:rhel 5.7 html
首先下載好兩個工具: linux
rsync地址: http://rsync.samba.org/download.html c++
inotify-tools: http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz git
此次的實驗主要有兩臺機器,172.16.54.114和172.16.54.115,咱們把115作爲源服務器,114作爲目標服務器 github
主要是把115上/home/md中的全部數據實時同步到114上的/home/md中 服務器
1,先關閉防火牆 工具
vi /etc/selinux/config #編輯防火牆配置文件 ui
#SELINUX=enforcing #註釋掉 spa
#SELINUXTYPE=targeted #註釋掉 操作系統
SELINUX=disabled #增長
:wq! #保存,退出
setenforce 0 #當即生效
2,查看端口是否被佔用(直接在命令行輸入)及安裝
netstat –apn | grep 873
安裝rsync,在兩臺服務器上都要進行這個步驟
首先將下載的包解壓
tar -xzvf rsync-3.1.0.tar.gz
解壓後進入目錄
./configure --prefix=/usr/local/rsync
#說明安裝在/usr/local/rsync目錄中
在這一步以前要安裝相對就的gcc和gcc-c++
make
make install
安裝完畢
chkconfig rsync on #隨系統啓動
這個只在114上作
建立rsync配置文件rsync.conf
vi /etc/rsyncd.conf #建立配置文件,添加如下代碼
log file = /var/log/rsyncd.log #日誌文件位置,啓動rsync後自動產生這個文件,無需提早建立
pidfile = /var/run/rsyncd.pid #pid文件的存放位置
lock file = /var/run/rsync.lock #支持max connections參數的鎖文件
secrets file = /etc/rsync.pass #用戶認證配置文件,裏面保存用戶名稱和密碼,後面會建立這個文件
motd file = /etc/rsyncd.Motd #rsync啓動時歡迎信息頁面文件位置(文件內容自定義)
[md] #自定義名稱
path = /home/md/ #rsync服務端數據目錄路徑
comment = md #模塊名稱
uid = root #設置rsync運行權限爲root
gid = root #設置rsync運行權限爲root
port=873 #默認端口
use chroot = no #默認爲true,修改成no,增長對目錄文件軟鏈接的備份
read only = no #設置rsync服務端文件爲讀寫權限
list = no #不顯示rsync服務端資源列表
max connections = 200 #最大鏈接數
timeout = 600 #設置超時時間
auth users = md #執行數據同步的用戶名,能夠設置多個,用英文狀態下逗號隔開
hosts allow = 172.16.54.114 #容許進行數據同步的客戶端IP地址,能夠設置多個,用英文狀態下逗號隔開
#hosts deny = 218.234.1.254 #禁止數據同步的客戶端IP地址,能夠設置多個,用英文狀態下逗號隔開(這個比較隨便,也能夠沒有)
:wq! #保存,退出
建立用戶認證文件
vi /etc/rsync.scrt #配置文件,添加如下內容
md:123456 #格式爲 用戶:密碼,若是是多個,能夠一行一個
:wq! #保存,退出
chmod 600 /etc/rsyncd.conf #設置文件全部者讀取、寫入權限
chmod 600 /etc/rsync.scrt #設置文件全部者讀取、寫入權限
在此,咱們普及一個問題,咱們先進入/etc/xinetd.d文件中,能夠看到rsync這個文件,說明rsync是由xinetd管理,能夠經過xinetd來啓動rsync
/etc/init.d/xinetd start #啓動
service xinetd stop #中止
service xinetd restart #從新啓動
------------------------只在114上進行的到此爲止--------------------
如下只到115上進行
vi /etc/rsync.scrt #編輯文件,添加如下內容
123456 #密碼
:wq! #保存退出
chmod 600 /etc/passwd.txt #設置文件權限,只設置文件全部者具備讀取、寫入權限便可
inotify-tools下載地址:http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
上傳inotify-tools-3.14.tar.gz到/usr/local/src目錄下
cd /usr/local/src
tar zxvf inotify-tools-3.14.tar.gz #解壓
cd inotify-tools-3.14 #進入解壓目錄
./configure --prefix=/usr/local/inotify #配置
make #編譯
make install #安裝
3、設置系統環境變量,添加軟鏈接
echo "PATH=/usr/local/inotify/bin:$PATH" >>/etc/profile.d/inotify.sh
source /etc/profile.d/inotify.sh #使設置當即生效
echo "/usr/local/inotify/lib" >/etc/ld.so.conf.d/inotify.conf
ln -s /usr/local/inotify/include /usr/include/inotify
4、修改inotify默認參數(inotify默認內核參數值過小)
查看系統默認參數值
sysctl -a | grep max_queued_events
結果是:fs.inotify.max_queued_events = 16384
sysctl -a | grep max_user_watches
結果是:fs.inotify.max_user_watches = 8192
sysctl -a | grep max_user_instances
結果是:fs.inotify.max_user_instances = 128
修改參數:
sysctl -w fs.inotify.max_queued_events="99999999"
sysctl -w fs.inotify.max_user_watches="99999999"
sysctl -w fs.inotify.max_user_instances="65535"
參數說明:
max_queued_events:
inotify隊列最大長度,若是值過小,會出現"** Event Queue Overflow **"錯誤,致使監控文件不許確
max_user_watches:
要同步的文件包含多少目錄,能夠用:find /home/www.osyunwei.com -type d | wc -l 統計,必須保證max_user_watches值大於統計結果(這裏/home/www.osyunwei.com爲同步文件目錄)
max_user_instances:
每一個用戶建立inotify實例最大值
5、建立腳本,實時觸發rsync進行同步
vi /usr/local/inotify/rsync.sh #編輯,添加如下代碼
#!/bin/sh
srcdir=/home/md/
dstdir=buspos
rsyncuser=buspos
rsyncpassdir=/etc/rsync.scrt
dstip="172.16.54.114"
for ip in $dstip
do
rsync -avH --port=873 --progress --delete $srcdir $rsyncuser@$ip::$dstdir --password-file=$rsyncpassdir
done
/usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,modify,delete,create,attrib,move $srcdir | while read file
do
for ip in $dstip
do
rsync -avH --port=873 --progress --delete $srcdir $rsyncuser@$ip::$dstdir --password-file=$rsyncpassdir
echo " ${file} was rsynced" >> /tmp/rsync.log 2>&1
done
done
chmod +x /usr/local/inotify/rsync.sh #添加腳本執行權限
6、設置腳本開機自動執行
vi /etc/rc.d/rc.local #編輯,在最後添加一行
sh /usr/local/inotify/rsync.sh & #設置開機自動在後臺運行腳本
:wq! #保存退出
啓動腳本
nohup . /usr/local/inotify/rsync.sh &
關閉了窗口也沒事,已在後臺運行下次開機自動啓動