inotify-tools+rsync實(shí)時同步文件的配置方法
服務(wù)器A:
論壇的主服務(wù)器,運(yùn)行DZ X2論壇程序;服務(wù)器B:論壇從服務(wù)器,需要把X2的圖片附件和MySQL數(shù)據(jù)實(shí)時從A主服務(wù)器實(shí)時同步到B服務(wù)器.MySQL同步設(shè)置會在下一編中說到.以下是用于實(shí)時同步兩臺服務(wù)器的圖片。
因?yàn)橐话愕腞SYNC需要CRON來定期運(yùn)行SH腳本來實(shí)現(xiàn)同步,這樣會帶來一些問題.比如用戶從主服務(wù)器上傳上一個圖片,需要最少一分鐘才能從從服務(wù)器顯示出來.自從Linux 2.6內(nèi)核后,支持了inotify機(jī)制,當(dāng)某些文件或文件夾有改變時,發(fā)出相應(yīng)的事件,這樣,第三方程序只要訂閱這些事件,就可以處理相應(yīng)的操作了.這時,只要有文件被修改,就執(zhí)行一次RSNYN,把修改的文件主動地上傳到另一臺服務(wù)器上就可以了。
我使用的是google的inotify-tools,比較簡單.國內(nèi)有功能很強(qiáng)大的類似的程序,但是好復(fù)雜.另外需要注意的是:如果使用inotify-tools來實(shí)現(xiàn)實(shí)時同步,我們的主服務(wù)器--源文件服務(wù)器(也就是服務(wù)器A)實(shí)現(xiàn)是RSYNC的從服務(wù)器,我們的從服務(wù)器--目標(biāo)同步的服務(wù)器(服務(wù)器B)才是RSYNC的主服務(wù)器.不要搞混了哦.
首先從主服務(wù)器A開始,需要確定你的系統(tǒng)是否支持inotify:
ll /proc/sys/fs/inotify
total 0
-rw-r--r-- 1 root root 0 Jan 4 17:56 max_queued_events
-rw-r--r-- 1 root root 0 Jan 4 17:56 max_user_instances
-rw-r--r-- 1 root root 0 Jan 4 17:56 max_user_watches
能輸出這樣的結(jié)果表示支持。
下載并安裝inotify-tools:
wget --no-check-certificate http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar xzvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure --prefix=/usr
make
make install
完成inotify-tools的安裝。
接下來需要寫兩個SH腳本,inotify_init.sh和inotify_monitor.sh:
inotify_init.sh 用于第一次初始化,也就是運(yùn)行一次完整的RSYNC同步.
vi /root/inotify_init.sh
#!/bin/sh
SRC=/主服務(wù)器A需要同步的目錄/ #記得在最后面加/不然RYNC會自動增加一層目錄
DES=bbsatt
IP=從服務(wù)器B的IP
USER=rsync
#DST=/etc/rsyncd 遠(yuǎn)程rsync模塊下的目錄
INWT=/usr/bin/inotifywait
RSYNC=/usr/bin/rsync
$RSYNC -zahqt --password-file=/root/rsync.pwd $SRC $USER@$IP::$DES
保存退出.
設(shè)置可執(zhí)行權(quán)限:
chmod +x /root/inotify_init.sh
接下是inotify_monitor.sh,用于訂閱文件修改事件.注意,因?yàn)樘貏e原因,我在這里做的是增量備份+實(shí)時同步,也就是說,當(dāng)主服務(wù)器A上的圖片被刪除是,從服務(wù)器B是不會刪除圖片的.
vi /root/inotify_monitor.sh
#!/bin/bash
##---------------------
sync[0]='/主服務(wù)器需要同步的目錄/,從服務(wù)器B的IP,bbsatt,rsync' # localdir,host,rsync_module,auth_user
INWT=/usr/bin/inotifywait
RSYNC=/usr/bin/rsync
PASS=/root/rsync.pwd
##---------------------
for item in ${sync[@]}; do
dir=`echo $item | awk -F"," '{print $1}'`
host=`echo $item | awk -F"," '{print $2}'`
module=`echo $item | awk -F"," '{print $3}'`
user=`echo $item | awk -F"," '{print $4}'`
$INWT -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f %e' \
--event CLOSE_WRITE,create,move $dir | while read date time file event
do
#echo $event'-'$file
case $event in
MODIFY|CREATE|MOVE|MODIFY,ISDIR|CREATE,ISDIR|MODIFY,ISDIR)
if [ "${file: -4}" != '4913' ] && [ "${file: -1}" != '~' ]; then
cmd="$RSYNC -zahqzt --exclude='*' --password-file=$PASS \
--include=$file $dir $user@$host::$module > /dev/null 2>1&"
echo $cmd
$cmd
fi
MOVED_FROM|MOVED_FROM,ISDIR|DELETE,ISDIR)
if [ "${file: -4}" != '4913' ] && [ "${file: -1}" != '~' ]; then
cmd="$RSYNC -zahqzt --password-file=$PASS --exclude=$file \
$dir $user@$host::$module > /dev/null 2>1&"
echo $cmd
$cmd
fi
esac
done &
done
chmod +x /root/inotify_monitor.sh
設(shè)置RSYNC自動登錄驗(yàn)證密碼
vi /root/rsync.pwd
xxxxxx
保存,退出
設(shè)置只有ROOT才可以查看的權(quán)限.
chmod 0600 /root/rsync.pwd
以下是備從務(wù)器B的配置:
安裝RSYNC
yum rsync -y
#----配置RSNYD服務(wù)
vi /etc/rsyncd.conf
內(nèi)容如下,需要把Apache修改成你運(yùn)行網(wǎng)站的用戶名,我的是因?yàn)樵瓉硎褂胊pache,雖然現(xiàn)在用Nginx,也一直沒改用戶名:
uid = apache
gid = apache
use chroot = no
max connections = 4
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[bbsatt]
path = /從服務(wù)器B本地用于存放備份的目錄
ignore errors
read only = no
list = false
hosts allow = 主服務(wù)器A的IP
auth users = rsync
secrets file = /etc/rsync.pas
vi /etc/rsync.pas
rsync:xxxxxx
chmod 0600 /etc/rsync.pas
啟動RSYNCD
rsync --daemon
添加開機(jī)自動啟動服務(wù):
vi /etc/rc.local
rsync --daemon
回到主服務(wù)器A,
vi /etc/rc.local
添加以下內(nèi)容,實(shí)時開機(jī)自動同步:
/root/inotify_init.sh
/root/inotify_monitor.sh
保存退出
運(yùn)行:
/root/inotify_init.sh
/root/inotify_monitor.sh
這樣就能實(shí)現(xiàn)實(shí)時同步圖片文件了,在主服務(wù)器A的同步目錄下新建一個文件測試下吧。
- 使用cwRsync實(shí)現(xiàn)windows下服務(wù)器文件定時同步備份(附錯誤處理方法)
- Linux 用cp和rsync同步文件時跳過指定目錄的方法
- rsync 同步錯誤 cwrsync rsync error rsync error: some files/attrs were not transferred 解決方法
- RSync實(shí)現(xiàn)文件同步備份配置詳解
- rsync相對于其他同步工具的優(yōu)缺點(diǎn)介紹
- 在Windows中配置Rsync同步文件的方法
- windows下文件同步工具 CwRsync 4.0.2 安裝配置方法(圖文)
- rsync 只同步目錄結(jié)構(gòu)不同步文件的方法
- 無需密碼通過ssh執(zhí)行rsync來同步文件的方法
- Rsync實(shí)現(xiàn)文件定時同步技巧
相關(guān)文章
Linux執(zhí)行可執(zhí)行文件提示No such file or directory的解決方法
這篇文章主要介紹了Linux執(zhí)行可執(zhí)行文件提示No such file or directory的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05在 Linux 命令行發(fā)送郵件的 5 種方法(推薦)
這篇文章主要介紹了在 Linux 命令行發(fā)送郵件的 5 種方法,本教程中包含了最流行的 5 個命令行郵件客戶端,你可以選擇其中一個,需要的朋友可以參考下2019-12-12Ubuntu20的tzselect設(shè)置時間失效的問題,樹莓派服務(wù)器(推薦)
這篇文章主要介紹了Ubuntu20的tzselect設(shè)置時間失效的問題,樹莓派服務(wù)器,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05