所需軟件下載地址:
本實驗實現的是單向同步,非雙向同步
實驗環境:兩臺虛擬機,我這是兩臺CentOS5.5
軟件部署:
服務端(IP:192.168.1.104):rsync-3.0.9.tar.gz和inotify-tools-3.14.tar.gz
客戶端(IP:192.168.1.108):rsync-3.0.9.tar.gz
步驟:
[root@CentOS5smb]#ls
inotify-tools-3.14.tar.gz rsync-3.0.9.tar.gz
[root@CentOS5smb]#tar zxvf rsync-3.0.9.tar.gz -C /gwq/20130616/
[root@CentOS5smb]#cd /gwq/20130616/rsync-3.0.9
[[email protected]]#./configure --prefix=/usr/local/rsync
[[email protected]]#make
[[email protected]]#make install
[[email protected]]#cd /usr/local/rsync/
[root@CentOS5rsync]#echo "rsync-pwd" > /usr/local/rsync/rsync.passwd
///rsync-pwd爲密碼,可自定義
[root@CentOS5rsync]#chmod 600 rsync.passwd
///爲了避免不必要的錯誤,請把權限改爲600
到此服務端上的rsync已經安裝好了,但還沒進行配置,我們先來安裝inotify,稍後再來進行配置rsync
[root@CentOS5smb]#ls
inotify-tools-3.14.tar.gz rsync-3.0.9.tar.gz
[root@CentOS5smb]#tar zxvf inotify-tools-3.14.tar.gz -C /gwq/20130616/
[root@CentOS5smb]#cd /gwq/20130616/inotify/
[[email protected]]#./configure --prefix=/usr/local/inotify
[[email protected]]#make
[[email protected]]#make install
現在進行配置rsync
新建rsync.sh文件,我這裏在/tmp下新建rsync.sh
[root@CentOS5tmp]#vi rsync.sh
#/bin/bash
host=192.168.1.108 ///客戶端IP地址
src=/tmp ////服務端要實時監控的目錄
des=web ///認證的模塊名,需要與客戶端一致
user=webuser ///建立密碼文件裏的認證用戶
/usr/local/inotify/bin/inotifywait-mrq--timefmt'%d/%m/%y%H:%M'--format'%T%w%f%e'-emodify,delete,create,attrib$src\
|whilereadfiles
do
/usr/bin/rsync-vzrtopg--delete--progress--password-file=/usr/local/rsync/rsync.passwd$src$user@$host::$des
echo "${files}wasrsynced" >> /tmp/rsync.log2 > &1
done
[root@CentOS5tmp]#chmod 764 rsync.sh
[root@CentOS5tmp]#sh rsync.sh& ///後臺運行該腳本
[root@CentOS5tmp]#echo “/tmp/rsync.sh” >> /etc/rc.local/rsync.sh ///腳本加入到開機啓動項裏
[root@CentOS5tmp]#touch /etc/rsyncd.conf ///在etc下新建一個rsyncd.conf空文件
到此服務端已經配置完畢,下面我們來配置客戶端
客戶端配置,下載安裝rsync
[root@CentOS5gwq]#ls
rsync-3.0.9.tar.gz
[root@CentOS5gwq]#tar zxvf rsync-3.0.9.tar.gz
[root@CentOS5gwq]#ls
rsync-3.0.9 rsync-3.0.9.tar.gz
[root@CentOS5gwq]#cd rsync-3.0.9
[[email protected]]#./configure --prefix=/usr/local/rsync
[[email protected]]#make
[[email protected]]#make install
[[email protected]]#echo “webuser:rsync-pwd” > /usr/local/rsync/rsync.passwd
///服務端建立的密碼文件裏只有密碼,沒有用戶名;而在客戶端裏建立的密碼文件,用戶名與密碼都有
[[email protected]]#cd /usr/local/rsync
[root@CentOS5rsync]#chmod 600 rsync.passwd
新建rsync配置文件
[root@CentOS5rsync]#pwd
/usr/local/rsync
[root@CentOS5rsync]#vi rsync.conf
uid=root
gid=root
usechroot=no
maxconnections=10
strictmodes=yes
pidfile=/var/run/rsyncd.pid
lockfile=/var/run/rsync.lock
logfile=/var/log/rsyncd.log
[web]///服務端rsync.sh裏認證模塊名稱
path=/tmp/
comment=webfile
ignoreerrors
readonly=no
writeonly=no
hostsallow=192.168.1.104
hostsdeny=*
list=false
uid=root
gid=root
authusers=webuser
secretsfile=/usr/local/rsync/rsync.passwd
[root@CentOS5rsync]#/usr/local/rsync/bin/rsync –daemon
///啓動服務端和客戶端的rsync服務
在服務端tmp目錄下新建文件和目錄,客戶端自動同步
手動同步命令格式:
[root@CentOS5rsync]#/usr/bin/rsync-vzrtopg--delete–progress --password-file=/usr/local/rsy
nc/rsync.passwd/tmp/[email protected]::web
自動同步命令格式:
sh rsync.sh&
可以制定任務計劃,讓rsync各一段時間同步一次,格式爲:
*/1****/usr/bin/rsync -Rav --delete--password-file=/usr/local/rsync/[email protected]::web/tmp
這樣就會每分鐘同步一次,我做這個格式的任務計劃得到的效果是同步客戶端指定的文件和目錄,而不是服務端的,就等於說你在服務端新建一個文件,一分鐘後會自動消失,因爲客戶端裏面沒有此文件,而在客戶端裏面新建一個文件,則一分鐘後會同步至服務端(cron計劃需要在服務端上操作執行,客戶端上操作是沒反應的)
而使用sh rsync.sh&則同步服務端的