久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

rsync + inotify

 昵稱6393845 2011-03-15

rsync + inotify 實時同步
條件:
需要實時同步的兩臺主機(jī): 192.168.166.10  192.168.166.11
服務(wù)端 192.168.166.10  部署服務(wù):rsync  + inotify + 同步腳本
客戶端 192.168.166.11 部署服務(wù):rsync  + rsync.conf <只需將 rsync 服務(wù)啟動即可>
-- 可擁有多臺客戶端

同步的網(wǎng)站目錄: /usr/local/apache2/htdocs/ghf
一:1.所需的安裝包:
inotify-tools-3.14.tar.gz
http://inotify-tools./
rsync-3.0.7.tar.gz
2.rsync服務(wù)端和客戶端安裝
# rpm -qa | grep rsync
# rpm -e rsync
# cd /usr/local/src
# tar zxvf rsync-3.0.7.tar.gz
# cd rsync-3.0.7
# ./configure --prefix=/usr/local/rsync  && make && make install
#ln -s /usr/local/rsync/bin/rsync  /usr/bin/
# rsync --version
rsync  version 3.0.7  protocol version 30
<<如果執(zhí)行rsync時報這個錯 rsync: error while loading shared libraries:
libiconv.so.2 
解決辦法:在/etc/ld.so.conf中加一行/usr/local/lib,運行l(wèi)dconfig,。就可以了,。報錯的
原因可能之前更新過iconv庫>>

3.服務(wù)端操作部分
(1).inotify安裝在服務(wù)端器
# cd /usr/local/src
# tar zxvf inotify-tools-3.14.tar.gz
# cd inotify-tools-3.14
# ./configure && make && make install
做個軟鏈接
32位系統(tǒng):
ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib/libinotifytools.so.0
64位系統(tǒng):
ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib64/libinotifytools.so.0

(2).在服務(wù)器端創(chuàng)建腳本 rsync.sh
vim rsync.sh
#!/bin/bash
###########################
# 在這里配置本地文件夾,目標(biāo)host,目標(biāo)的rsync_module,。rsync_module在同步機(jī)器
的/etc/rsyncd.conf文件中配置
# 此腳本可以實現(xiàn)多服務(wù)器多目錄的監(jiān)控
#sync[0]='/tongbu,192.168.166.12,test' # localdir,host,rsync_module
#sync[0]='/tongbu,192.168.166.13,test' # localdir,host,rsync_module
sync[0]='/usr/local/apache2/htdocs/ghf,192.168.166.11,tongbu'
sync[1]='/usr/local/apache2/htdocs/wt1,192.168.166.11,tongbu1'
###########################
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}'`
inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format  '%T %w%f %e' \
--event CLOSE_WRITE,create,move,delete,modify,attrib  $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 -avz --progress --delete --password-file=/etc/rsyncd-client.pass
$dir root@$host::$module"
      echo $cmd
     $cmd
    fi
    ;;
   MOVED_FROM|MOVED_FROM,ISDIR|DELETE|DELETE,ISDIR)
    if [ "${file: -4}" != '4913' ]  && [ "${file: -1}" != '~' ]; then
     cmd="rsync -avz --progress --delete  --password-file=/etc/rsyncd-client.pass
$dir root@$host::$module"
      echo $cmd
     $cmd
    fi
    ;;
  esac
 done &
done
 

# ./rsync.sh 執(zhí)行同步腳本,,在相應(yīng)的目錄下測試相關(guān)文件.
將此腳本寫入到/etc/rc.local 讓系統(tǒng)自動加載即可.
########################################
腳本相關(guān)注解:
    -m 是保持一直監(jiān)聽
    -r 是遞歸查看目錄
    -q 是打印出事件~
    -e create,move,delete,modify
    監(jiān)聽 創(chuàng)建 移動 刪除 寫入 事件
    rsync -aHqzt $SRC $DST
    -a 存檔模式
    -H 保存硬連接
    -q 制止非錯誤信息
    -z 壓縮文件數(shù)據(jù)在傳輸
    -t 維護(hù)修改時間
    -delete 刪除于多余文件
當(dāng)要排出同步某個目錄時,,為rsync添加--exculde=PATTERN參數(shù),,注意,,路徑是相對路徑,。詳
細(xì)查看man rsync
當(dāng)要排除都某個目錄的事件監(jiān)控的處理時,為inotifywait添加--exclude或--excludei參數(shù),。
詳細(xì)查看man inotifywait
另:
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format  '%T %w%f' \
-e modify,delete,create,attrib \
${src} \
上面的命令返回的值類似于:
10/03/09 15:31 /wwwpic/1
這3個返回值做為參數(shù)傳給read,,關(guān)于此處,有人是這樣寫的:
inotifywait -mrq -e create,move,delete,modify $SRC | while read D E F;do
細(xì)化了返回值,。
 
說明: 當(dāng)文件系統(tǒng)發(fā)現(xiàn)指定目錄下有如上的條件的時候就觸發(fā)相應(yīng)的指令,,是一種主動告之
的而非我用循環(huán)比較目錄下的文件的異動,,該程序
在運行時,更改目錄內(nèi)的文件時系統(tǒng)內(nèi)核會發(fā)送一個信號,,這個信號會觸發(fā)運行rsync命令,,
這時會同步源目錄和目標(biāo)目錄。
--timefmt:指定輸出時的輸出格式
   --format:  '%T %w%f'指定輸出的格式
二.關(guān)于inotify介紹
Inotify 是文件系統(tǒng)事件監(jiān)控機(jī)制,,作為 dnotify 的有效替代,。dnotify 是較早內(nèi)核支持的
文件監(jiān)控機(jī)制。Inotify 是一種強(qiáng)大的,、細(xì)粒度的
,、異步的機(jī)制,它滿足各種各樣的文件監(jiān)控需要,,不僅限于安全和性能,。
inotify 可以監(jiān)視的文件系統(tǒng)事件包括:
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,,文件被關(guān)閉,,等同于(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)
IN_MOVE,文件被移動,,等同于(IN_MOVED_FROM | IN_MOVED_TO)
注:上面所說的文件也包括目錄,。
 

4.在客戶端創(chuàng)建/etc/rsyncd.conf 
uid=root
gid=root
hosts allow=192.168.166.10        服務(wù)器IP
#hosts deny=0.0.0.0/32
use chroot=no
max connections=10
secrets file=/etc/rsyncd.pas
motd file=/etc/rsyncd.motd
pid file =/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
log file=/var/log/rsyncd.log
[tongbu]                            模塊名
path=/usr/local/apache2/htdocs/
comment=rsync files                 同步目錄
ignore errors
read only=no
list=yes
auth users=root
secrets file=/etc/rsyncd.pas
pid file=/var/run/rsyncd.pid
log file=/var/log/rsyncd.log
lock file=/var/run/rsyncd.lock

[test1]
path=/usr/local/apache2/htdocs/
comment=rsync files
ignore errors
read only=no
list=no
auth users=root
secrets file=/etc/rsyncd.pas
pid file=/var/run/rsyncd.pid
log file=/var/log/rsyncd.log
lock file=/var/run/rsyncd.lock

5.配置/etc/rsyncd.pas
root:000000
格式為:用戶名:密碼,,可以設(shè)置多個用戶密碼
6.修改rsyncd.pas的文件屬性
chmod 0600 /etc/rsyncd.pas
7.啟動rsync,默認(rèn)端口為873

/usr/local/rsync/bin/rsync  --daemon --port=873 --config=/etc/rsyncd.conf &
二:服務(wù)端腳本安裝
1.配置/etc/rsyncd-client.pass
000000
格式為:只有密碼無用戶名
2.修改rsyncd-client.pass的文件屬性
chmod 0600 /etc/rsyncd-client.pass
三:OK,現(xiàn)在可以測試?yán)玻?/div>

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多