使用軟件Rsync和Inotify,實(shí)現(xiàn)多服務(wù)器,Linux和windows系統(tǒng)文件的實(shí)時(shí)同步
兩臺(tái)Linux 主機(jī)之間文件實(shí)時(shí)同步
主機(jī)A: 192.168.254.201
主機(jī)B: 192.168.254.202
實(shí)驗(yàn)?zāi)康?,?shí)現(xiàn)在主機(jī)B上做修改,主機(jī)A上做到實(shí)時(shí)同步
1.1 主機(jī)A上的配置
1.1.1建立需要同步文件夾
Mkdir /opt/rsync
1.1.2安裝Rsync
Emerge rsync
我用的Gentoo,默認(rèn)已經(jīng)安裝,配置文件在/etc/rsyncd.conf
1.1.3修改配置文件
Nano –w /etc/rsyncd.conf
# Globel setting
uid = root
gid = root
use chroot =no
max connectiongs = 10
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsync.og
# Folder Setting,Permit add more folder
[images]
path = /opt/image/
read only = no
auth users = rsyncuser
secrets file = /etc/rsyncd.secrets
1.1.4 寫(xiě)驗(yàn)證文件
Nano –w /etc/rsyncd.secrets
rsyncuser:Password01
Chown -R 600 /etc/rsyncd.secrets
1.1.5 啟動(dòng)服務(wù)
Rsync --daemon --config=/etc/rsyncd.conf
Echo –en ‘rsync –daemon –config=/etc/rsyncd.conf’ >> /etc/rc.local
1.2 主機(jī)B上面的配置
1.2.1 建立相同的目錄
Mkdir /opt/rsync
1.2.2安裝rsync和inotify
Emerge rsync
Emerge inotify-tools
1.2.3 建立訪問(wèn)密碼
Echo –en ‘Password01’ > /etc/rsyncd.secrets
Chmod 600 /etc/rsyncd.secrets
1.2.4配置同步腳本
nano -w /root/InotifyRsync.sh
#!/bin/bash
host_1=192.168.254.201
src=/opt/image/
dst=images
user=valeRsync
inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e
modify,delete$
do
rsync -avzP --delete --password-file=/etc/rsyncd.secrets $src $
echo "${file} was rsynced"
done
exit 0
1.2.5 測(cè)試運(yùn)行
echo -ne ‘/root/InotifyRsync.sh &’ >> /etc/rc.local
Sh /root/InotifyRsync.sh
另外開(kāi)一個(gè)終端在/opt/rsync下做測(cè)試,檢查A 主機(jī)是否有同步。
1.2.6 inotify支持的屬性
IN_ACCESS,即文件被訪問(wèn)
IN_MODIFY,文件被 write
IN_ATTRIB,文件屬性被修改,如 chmod、chown、touch 等
IN_CLOSE_WRITE,可寫(xiě)文件被 close
IN_CLOSE_NOWRITE,不可寫(xiě)文件被 close
IN_OPEN,文件被 open
IN_MOVED_FROM,文件被移走,如 mv
IN_MOVED_TO,文件被移來(lái),如 mv、cp
IN_CREATE,創(chuàng)建新文件
IN_DELETE,文件被刪除,如 rm
IN_DELETE_SELF,自刪除,即一個(gè)可執(zhí)行文件在執(zhí)行時(shí)刪除自己
IN_MOVE_SELF,自移動(dòng),即一個(gè)可執(zhí)行文件在執(zhí)行時(shí)移動(dòng)自己
IN_UNMOUNT,宿主文件系統(tǒng)被 umount
IN_CLOSE,文件被關(guān)閉,等同于(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)
IN_MOVE,文件被移動(dòng),等同于(IN_MOVED_FROM | IN_MOVED_TO
|