linux下通過rsync同步數據

好久沒來寫點東西了,最近做一項目時有一功能是後臺創建模塊然後預覽效果,涉及到的問題就是兩套不同的程序,兩臺不同的主機(當然也可以是一臺主機)數據同步問題,說白了就是將後臺創建的模塊文件推送到前臺相應目錄下。

 

解決辦法就用到了linux的shell命令rsync,說實話測試了好多次才成功,所以現在以文字的形式來記錄,自己備忘也希望可以幫助正在做這種功能而無從下手的同學。

 

環境:兩臺linux主機。我使用的192.168.84.130(服務端),192.168.84.134(客戶端)

使用命令:/user/bin/rsync

 

一般現在的linux都自帶rsync命令,如果沒有請自行安裝。(http://rsync.samba.org/)

 

服務器端也就是192.168.84.130需要配置/etc/rsyncd.conf,一般這個文件是沒有的,需要手動創建,編輯內容:

#
# Version: 1.0
# Maintainer :[email protected] <Network System Dept.>
#
# Rsync daemon configuration file.
#
######公共定義#############
uid = wangzhan #目錄的創建者
gid = wangzhan #目錄所屬的組
use chroot = no
max connections = 100
pid file = /var/run/rsyncd.pid
log file = /var/log/rsync
list = no #不允許列文件
strict modes = no

 

######定義自己需要的模塊##############
[publish_zt] #認證的模塊名,在client端需要指定
uid = wangzhan #目錄的創建者
gid = wangzhan #目錄所屬的組
path = /data1/www #需要做鏡像的目錄,比如客戶端傳文件到服務器端,就會進到這個目錄
use chroot = no
read only = no
list  = yes
hosts allow = 192.168.84.134 #允許的ip地址域,就是客戶端要連接服務器,必須在此把客戶端ip寫到此處

 

保存退出,配置文件定義ok。

 

然後啓動rsync

root@ubuntu:/data1/www#rsync --daemon --config=/etc/rsyncd.conf

接下來就是在服務器端創建鏡像保存目錄,也就是rsyncd.conf中定義的path目錄:/data1/www

這裏有一個關鍵點就是www目錄的擁有者以及組必須是:chown wangzhan:wangzhan  /data1/www

你問我爲什麼?因爲在rsyncd.conf中的[publish_zt]模塊中已經定義了uid和gid就是wangzhan。

服務器端的工作完成了,現在就是客戶端了。

 

1.客戶端推送文件到服務器端

===========================

wangzhan@ubuntu:/data1/www$ /usr/bin/rsync -rut --exclude=/.* /data1/www/xx.php 192.168.84.130::publish_zt/guoqing/

就是將客戶端/data1/www中的xx.php文件推送到服務器端/data1/www/guoqing/xx.php,用到程序當中的話,xx.php是

可以變化的,guoqing這個文件夾也可以使變化的,也就是說在程序當中改動他們就可以實現推送不同的文件到服務器端。

 

2.從服務器端下載文件到客戶端

===========================

wangzhan@ubuntu:/data1/www$ /usr/bin/rsync -ave ssh [email protected]:/data1/www/ /data1/www/

就是將服務器端/data1/www/目錄下的文件下載到客戶端/data1/www/目錄中

 

文到此處結束,請各位同學自行測試,如發現問題請不吝賜教!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章