最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

服務(wù)器A:
論壇的主服務(wù)器,運(yùn)行DZ X2論壇程序;服務(wù)器B:論壇從服務(wù)器,需要把X2的圖片附件和MySQL數(shù)據(jù)實(shí)時(shí)從A主服務(wù)器實(shí)時(shí)同步到B服務(wù)器.MySQL同步設(shè)置會(huì)在下一編中說(shuō)到.以下是用于實(shí)時(shí)同步兩臺(tái)服務(wù)器的圖片。

因?yàn)橐话愕腞SYNC需要CRON來(lái)定期運(yùn)行SH腳本來(lái)實(shí)現(xiàn)同步,這樣會(huì)帶來(lái)一些問(wèn)題.比如用戶從主服務(wù)器上傳上一個(gè)圖片,需要最少一分鐘才能從從服務(wù)器顯示出來(lái).自從Linux 2.6內(nèi)核后,支持了inotify機(jī)制,當(dāng)某些文件或文件夾有改變時(shí),發(fā)出相應(yīng)的事件,這樣,第三方程序只要訂閱這些事件,就可以處理相應(yīng)的操作了.這時(shí),只要有文件被修改,就執(zhí)行一次RSNYN,把修改的文件主動(dòng)地上傳到另一臺(tái)服務(wù)器上就可以了。

我使用的是google的inotify-tools,比較簡(jiǎn)單.國(guó)內(nèi)有功能很強(qiáng)大的類似的程序,但是好復(fù)雜.另外需要注意的是:如果使用inotify-tools來(lái)實(shí)現(xiàn)實(shí)時(shí)同步,我們的主服務(wù)器--源文件服務(wù)器(也就是服務(wù)器A)實(shí)現(xiàn)是RSYNC的從服務(wù)器,我們的從服務(wù)器--目標(biāo)同步的服務(wù)器(服務(wù)器B)才是RSYNC的主服務(wù)器.不要搞混了哦.

首先從主服務(wù)器A開(kāi)始,需要確定你的系統(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的安裝。

接下來(lái)需要寫兩個(gè)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會(huì)自動(dòng)增加一層目錄
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í)時(shí)同步,也就是說(shuō),當(dāng)主服務(wù)器A上的圖片被刪除是,從服務(wù)器B是不會(huì)刪除圖片的.

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自動(dòng)登錄驗(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)樵瓉?lái)使用apache,雖然現(xiàn)在用Nginx,也一直沒(méi)改用戶名:

復(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

啟動(dòng)RSYNCD
rsync --daemon
添加開(kāi)機(jī)自動(dòng)啟動(dòng)服務(wù):
vi /etc/rc.local
rsync --daemon
回到主服務(wù)器A,
vi /etc/rc.local
添加以下內(nèi)容,實(shí)時(shí)開(kāi)機(jī)自動(dòng)同步:

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

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

保存退出

運(yùn)行:

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

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

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

相關(guān)文章

  • Linux中部署MeterSphere實(shí)現(xiàn)遠(yuǎn)程訪問(wèn)

    Linux中部署MeterSphere實(shí)現(xiàn)遠(yuǎn)程訪問(wèn)

    MeterSphere是一站式開(kāi)源持續(xù)測(cè)試平臺(tái), 涵蓋測(cè)試跟蹤、接口測(cè)試、UI 測(cè)試和性能測(cè)試等功能,全面兼容 JMeter、Selenium 等主流開(kāi)源標(biāo)準(zhǔn),有效助力開(kāi)發(fā)和測(cè)試團(tuán)隊(duì)充分利用云彈性進(jìn)行高度可擴(kuò)展的自動(dòng)化測(cè)試,
    本文介紹Linux中部署MeterSphere實(shí)現(xiàn)遠(yuǎn)程訪問(wèn)MeterSphere界面
    2023-10-10
  • 在Linux中將用戶添加到特定組的四種方法

    在Linux中將用戶添加到特定組的四種方法

    本文詳細(xì)介紹了在Linux系統(tǒng)中將用戶添加到特定組的四種方法:使用`usermod`命令、`gpasswd`命令、Shell腳本以及手動(dòng)編輯`/etc/group`文件,通過(guò)這些方法,可以方便地管理用戶的主要組和次要組,實(shí)現(xiàn)用戶權(quán)限的靈活配置,需要的朋友可以參考下
    2025-02-02
  • Linux中無(wú)法遠(yuǎn)程連接數(shù)據(jù)庫(kù)問(wèn)題的解決方法

    Linux中無(wú)法遠(yuǎn)程連接數(shù)據(jù)庫(kù)問(wèn)題的解決方法

    這篇文章主要給大家介紹了關(guān)于Linux中無(wú)法遠(yuǎn)程連接數(shù)據(jù)庫(kù)問(wèn)題的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • 2018即將推出的Apache Spark 2.4都有哪些新功能

    2018即將推出的Apache Spark 2.4都有哪些新功能

    即將發(fā)布的 Apache Spark 2.4 版本是 2.x 系列的第五個(gè)版本。 本文對(duì)Apache Spark 2.4 的主要功能和增強(qiáng)功能進(jìn)行了概述,需要的朋友可以參考下
    2018-09-09
  • Deepin中安裝與使用virtualenv的教程

    Deepin中安裝與使用virtualenv的教程

    這篇文章主要介紹了Deepin中安裝與使用virtualenv的教程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 詳解Linux服務(wù)器狀態(tài)、性能相關(guān)命令

    詳解Linux服務(wù)器狀態(tài)、性能相關(guān)命令

    這篇文章主要介紹了詳解Linux服務(wù)器狀態(tài)、性能相關(guān)命令,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-09-09
  • linux 查看文件系統(tǒng)類型實(shí)例方法

    linux 查看文件系統(tǒng)類型實(shí)例方法

    在本篇文章里小編給大家整理的是一篇關(guān)于linux 查看文件系統(tǒng)類型實(shí)例方法,對(duì)此有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-02-02
  • Manjaro Linux安裝singularity-container的解決方案

    Manjaro Linux安裝singularity-container的解決方案

    這篇文章主要介紹Singularity容器在Manjaro平臺(tái)的安裝,以及一些常見(jiàn)的使用場(chǎng)景:拉取沙箱制作容器鏡像、遠(yuǎn)程制作容器鏡像以及修改容器鏡像的方法,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • linux服務(wù)器顯卡崩潰解決方案

    linux服務(wù)器顯卡崩潰解決方案

    這篇文章主要介紹了linux服務(wù)器顯卡崩潰解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 在 Linux 終端中查找域名 IP 地址的命令(五種方法)

    在 Linux 終端中查找域名 IP 地址的命令(五種方法)

    本教程介紹了如何在 Linux 終端驗(yàn)證域名或計(jì)算機(jī)名的 IP 地址。我們將教你如何有效使用這些命令在 Linux 終端中識(shí)別多個(gè)域的 IP 地址信息
    2019-12-12

最新評(píng)論

太谷县| 固始县| 竹山县| 江源县| 台东市| 临海市| 江门市| 长顺县| 正蓝旗| 扬州市| 无棣县| 浪卡子县| 栾城县| 繁昌县| 将乐县| 当阳市| 平罗县| 两当县| 南华县| 若尔盖县| 六盘水市| 鹤壁市| 雷山县| 县级市| 白河县| 石泉县| 锡林郭勒盟| 栾川县| 盐城市| 恭城| 迭部县| 炎陵县| 富裕县| 天水市| 陆丰市| 新巴尔虎左旗| 九龙坡区| 视频| 凤冈县| 天台县| 古蔺县|