使用軟件Rsync和Inotify,,實現(xiàn)多服務器,Linux和windows系統(tǒng)文件的實時同步
兩臺Linux 主機之間文件實時同步
主機A: 192.168.254.201
主機B: 192.168.254.202
實驗目的,,實現(xiàn)在主機B上做修改,主機A上做到實時同步
1.1 主機A上的配置
1.1.1建立需要同步文件夾
Mkdir /opt/rsync
1.1.2安裝Rsync
Emerge rsync
我用的Gentoo,,默認已經(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 寫驗證文件
Nano –w /etc/rsyncd.secrets
rsyncuser:Password01
Chown -R 600 /etc/rsyncd.secrets
1.1.5 啟動服務
Rsync --daemon --config=/etc/rsyncd.conf
Echo –en ‘rsync –daemon –config=/etc/rsyncd.conf’ >> /etc/rc.local
1.2 主機B上面的配置
1.2.1 建立相同的目錄
Mkdir /opt/rsync
1.2.2安裝rsync和inotify
Emerge rsync
Emerge inotify-tools
1.2.3 建立訪問密碼
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 測試運行
echo -ne ‘/root/InotifyRsync.sh &’ >> /etc/rc.local
Sh /root/InotifyRsync.sh
另外開一個終端在/opt/rsync下做測試,,檢查A 主機是否有同步,。
1.2.6 inotify支持的屬性
IN_ACCESS,即文件被訪問
IN_MODIFY,,文件被 write
IN_ATTRIB,,文件屬性被修改,如 chmod,、chown、touch 等
IN_CLOSE_WRITE,,可寫文件被 close
IN_CLOSE_NOWRITE,,不可寫文件被 close
IN_OPEN,文件被 open
IN_MOVED_FROM,,文件被移走,如 mv
IN_MOVED_TO,,文件被移來,如 mv,、cp
IN_CREATE,,創(chuàng)建新文件
IN_DELETE,文件被刪除,,如 rm
IN_DELETE_SELF,,自刪除,即一個可執(zhí)行文件在執(zhí)行時刪除自己
IN_MOVE_SELF,,自移動,,即一個可執(zhí)行文件在執(zhí)行時移動自己
IN_UNMOUNT,宿主文件系統(tǒng)被 umount
IN_CLOSE,,文件被關閉,,等同于(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)
IN_MOVE,文件被移動,,等同于(IN_MOVED_FROM | IN_MOVED_TO
|