東坡下載:內(nèi)容最豐富最安全的下載站!

首頁IT技術(shù)操作系統(tǒng) → rsync+inotify實(shí)時(shí)同步教程

rsync+inotify實(shí)時(shí)同步教程

相關(guān)文章發(fā)表評(píng)論 來源:本站原創(chuàng)時(shí)間:2014/2/20 19:14:02字體大小:A-A+

更多

作者:不詳點(diǎn)擊:79次評(píng)論:0次標(biāo)簽: 實(shí)時(shí)同步

架設(shè)rsync服務(wù)端 192.168.2.93

rysnc的官方網(wǎng)站:http://rsync.samba.org/可以從上面得到最新的版本。當(dāng)然,因?yàn)閞sync是一款如此有用的軟件,所以很多Linux的發(fā)行版本都將它收錄在內(nèi)了。

1
2
[root@oracle ~]# rpm -qa | grep rsync
rsync-3.0.6-9.el6_4.1.x86_64

rsync的主要有以下三個(gè)配置文件rsyncd.conf(主配置文件)、rsyncd.pwd(密碼文件)、rsyncd.motd(rysnc服務(wù)器信息)

rsyncd.motd這個(gè)配置文件就是登錄的提示信息,和/etc/motd這個(gè)文件的作用相似,這里就不創(chuàng)建它了

1
2
3
4
[root@oracle ~]# ll /etc/rsync*
-rw-r--r-- 1 root root 0 Feb 18 19:47 /etc/rsyncd.conf
-rw-r--r-- 1 root root 0 Feb 18 19:47 /etc/rsyncd.pwd
[root@oracle ~]# chmod 600 /etc/rsyncd.pwd

注:將rsyncd.pwd這個(gè)密碼文件的文件屬性設(shè)為root擁有, 且權(quán)限要設(shè)為600, 否則無法備份成功

1. 配置主配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@oracle ~]# vim /etc/rsyncd.conf
uid = root
gid = root
port = 873
address = 192.168.2.93
use chroot = no
max connections = 10
pid file = /var/run/rsyncd.pid
log file = /var/log/rsync.log
lock file = /var/run/rsync.lock
[base]
path = /test/
ignore errors
read only = false
write only = false
list = false
hosts allow = 192.168.2.0/24
hosts deny = *
auth users = rsync
secrets file = /etc/rsyncd.pwd

uid:指定該模塊以指定的用戶傳輸文件

uid:指定該模塊以指定的組傳輸文件

port:rsync服務(wù)的監(jiān)聽端口,默認(rèn)為873。

address:rsync服務(wù)監(jiān)聽的地址。
usechroot(全局/模塊):若為true,則rsync在傳輸文件之前首先chroot到path參數(shù)所指定的目錄下。這樣做的原因是實(shí)現(xiàn)額外的安全防護(hù),但是缺點(diǎn)是需要root權(quán)限,并且不能備份指向path外部的符號(hào)連接所指向的目錄文件。

max connections:允許的最大連接數(shù)。

pid file:存放rsync daemon服務(wù)的進(jìn)程ID的文件名。

log file:指定日志文件的名稱。

lock file:指定鎖定文件的位置。默認(rèn)為/var/run/rsyncd.lock。

path:指定模塊所映射的目錄路徑。

read only:僅允許客戶端下載。true表示僅允許,false不做限定。

write only:僅允許客戶端上傳。同上。

list:是否允許客戶端列出該模塊。yes允許,no不允許。

hosts allow:用一個(gè)主機(jī)列表指定哪些主機(jī)客戶允許連接該模塊,不匹配主機(jī)列表的主機(jī)將被拒絕。

hosts deny:用一個(gè)主機(jī)列表指定哪些主機(jī)不能連接rsync模塊。

auth users:連接該模塊的用戶名。這個(gè)用戶必須是系統(tǒng)真實(shí)存在的用戶。

secrets file:指定密碼文件的位置。

2. 添加anth users

1
[root@oracle ~]# useradd -r -s /sbin/nologin rsync

3. 配置密碼文件

1
[root@oracle ~]# echo "rsync:12345" > /etc/rsyncd.pwd

4. 啟動(dòng)進(jìn)程

rsync可以通過xinetd這個(gè)superdaemon進(jìn)行管理,也可以以stand alone的方式允許。

A.以stand alone方式

1
rsync --daemon  --config=/etc/rsyncd/rsyncd.conf

B.通過xinetd管理

1
2
3
4
[root@oracle ~]# vim /etc/services
rsync           873/tcp                         # rsync
rsync           873/udp                         # rsync
#默認(rèn)就有這兩行,可以不做這一步
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@oracle ~]# vim /etc/xinetd.d/rsync
# default: off
# description: The rsync server is a good addition to an ftp server, as it \
#       allows crc checksumming etc.
service rsync
{
        disable = no
        flags           = IPv6
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure  += USERID
}
1
2
3
[root@oracle ~]# service xinetd restart
Stopping xinetd:                                           [  OK  ]
Starting xinetd:                                           [  OK  ]

5. 防火墻上放行873端口,或者直接關(guān)閉也行

配置rsync客戶端 192.168.2.96

1. 客戶端只需配置密碼文件就可以了

1
2
[root@node2 ~]# echo "12345" > /etc/rsync.pwd
[root@node2 ~]# chmod 600 !$

2. 測(cè)試數(shù)據(jù)上傳和下載

1
2
3
[root@node2 ~]# rsync -avzP --delete --password-file=/etc/rsync.pwd /etc rsync@192.168.2.93::base
#/etc后有/和沒有/區(qū)別很大,有/就是上傳etc目錄下的文件(不包括etc目錄),而沒有/就是上傳整個(gè)etc目錄
[root@node2 test]# rsync -avzP --delete --password-file=/etc/rsync.pwd rsync@192.168.2.93::base /test/

3. 安裝inotify軟件包

Inotify 是一種強(qiáng)大的、細(xì)粒度的、異步的文件系統(tǒng)事件監(jiān)控機(jī)制,linux內(nèi)核從2.6.13起,加入了Inotify支持,通過Inotify可以監(jiān)控文件系統(tǒng)中添加、刪除,修改、移動(dòng)等各種細(xì)微事件

1
2
3
4
[root@node2 ~]# tar -xf inotify-tools-3.14.tar.gz
[root@node2 ~]# cd inotify-tools-3.14
[root@node2 inotify-tools-3.14]# ./configure
[root@node2 inotify-tools-3.14]# make && make install

4. 編寫監(jiān)控腳本

1
2
3
4
5
6
7
8
9
[root@node2 test]# vim /root/monitor.sh
#!/bin/bash
src=/test/
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,delete,create,attrib  $src
  while read files
do
/usr/bin/rsync -az --delete --password-file=/etc/rsync.pwd $src rsync@192.168.2.93::base && echo "${files} was rsynced" >
> /tmp/rsync.log
done


5. 后臺(tái)運(yùn)行腳本

1
[root@node2 ~]# nohup /root/monitor.sh &

退出shell,這個(gè)命令也不會(huì)結(jié)束。這樣實(shí)時(shí)同步就算完成了。

擴(kuò)展知識(shí)

相關(guān)評(píng)論

閱讀本文后您有什么感想? 已有 人給出評(píng)價(jià)!

  • 2791 喜歡喜歡
  • 2101 頂
  • 800 難過難過
  • 1219 囧
  • 4049 圍觀圍觀
  • 5602 無聊無聊
熱門評(píng)論
最新評(píng)論
發(fā)表評(píng)論 查看所有評(píng)論(0)
昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過審核才能顯示)