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í)同步就算完成了。