欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

inotify-tools+rsync實(shí)時同步文件的配置方法

 更新時間:2013年02月13日 22:05:45   作者:  
我使用的是google的inotify-tools,比較簡單.國內(nèi)有功能很強(qiáng)大的類似的程序,但是好復(fù)雜.

服務(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:

復(fù)制代碼 代碼如下:

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:

復(fù)制代碼 代碼如下:

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

復(fù)制代碼 代碼如下:

#!/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

復(fù)制代碼 代碼如下:

#!/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,也一直沒改用戶名:

復(fù)制代碼 代碼如下:

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ī)自動同步:

復(fù)制代碼 代碼如下:

/root/inotify_init.sh
/root/inotify_monitor.sh

保存退出

運(yùn)行:

復(fù)制代碼 代碼如下:

/root/inotify_init.sh
/root/inotify_monitor.sh

這樣就能實(shí)現(xiàn)實(shí)時同步圖片文件了,在主服務(wù)器A的同步目錄下新建一個文件測試下吧。

相關(guān)文章

  • Linux執(zhí)行可執(zhí)行文件提示No such file or directory的解決方法

    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查看cpu是否支持64位的方法

    linux查看cpu是否支持64位的方法

    這篇文章主要介紹了linux查看cpu是否支持64位的方法,需要的朋友可以參考下
    2014-03-03
  • xmapp環(huán)境搭建注意事項(xiàng)說明

    xmapp環(huán)境搭建注意事項(xiàng)說明

    如果要用其他IP訪問,需要到apache/conf/ext/httpd-xmapp.cf配置文檔下修改最后的一段信息,注釋掉一行拒絕IP的。還有修改一個允許訪問IP的為(*)
    2013-11-11
  • apache和mysql重啟命令

    apache和mysql重啟命令

    修改linux服務(wù)器的http配置之后,必須重啟Apache服務(wù)。
    2009-11-11
  • linux系統(tǒng)安裝msf的過程詳解

    linux系統(tǒng)安裝msf的過程詳解

    這篇文章主要介紹了linux系統(tǒng)安裝msf的過程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • LINUX查看進(jìn)程的4種方法(小結(jié))

    LINUX查看進(jìn)程的4種方法(小結(jié))

    這篇文章主要介紹了LINUX查看進(jìn)程的4種方法(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • apache開啟偽靜態(tài)的方法分享

    apache開啟偽靜態(tài)的方法分享

    這篇文章主要介紹了apache開啟偽靜態(tài)的方法分享,需要的朋友可以參考下
    2014-03-03
  • 在 Linux 命令行發(fā)送郵件的 5 種方法(推薦)

    在 Linux 命令行發(fā)送郵件的 5 種方法(推薦)

    這篇文章主要介紹了在 Linux 命令行發(fā)送郵件的 5 種方法,本教程中包含了最流行的 5 個命令行郵件客戶端,你可以選擇其中一個,需要的朋友可以參考下
    2019-12-12
  • Vim中的幾種文件備份方法總結(jié)

    Vim中的幾種文件備份方法總結(jié)

    最近在MCTF上看到了Vim的undo備份,順手學(xué)習(xí)了下 Vim 的幾種備份機(jī)制,所以這篇文章主要給大家介紹了關(guān)于Vim中的幾種文件備份,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-04-04
  • Ubuntu20的tzselect設(shè)置時間失效的問題,樹莓派服務(wù)器(推薦)

    Ubuntu20的tzselect設(shè)置時間失效的問題,樹莓派服務(wù)器(推薦)

    這篇文章主要介紹了Ubuntu20的tzselect設(shè)置時間失效的問題,樹莓派服務(wù)器,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05

最新評論