昨天把mysql的同步搞好了,今天順便也把網站代碼的同步研究一下。網上大致搜了下rsync、unison等軟件都可以實現同步。看了下vps上已經裝好了rsync,那就用這個好了。
安裝rsync的過程就忽略了,可以用yum或者apt-get進行安裝,也可以在官網上面下載:
http://rsync.samba.org
現在的環境是,兩台固定ip的linux服務器,要實現定時把server A的某個目錄同步到server B上。所以要把A當作rsync的服務器,B作為rsync的客戶端。
先對A進行配置:
A上面是centos,借用xinetd來運行rsync。一般來說xinetd也是系統自帶的,沒有就yum一下。
修改xinetd中的rsync啟動項文件:
vi /etc/xinetd.d/rsync
把裡面的disable=yes改為disable=no,完整代碼如下:
# 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 = IPv4
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
接著修改rsync的配置文件,位置在 /etc/rsyncd.conf ,沒有的話可以新建一個:
uid = root #以root運行
gid = root
use chroot = no
max connections = 5 #同時連接數
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
transfer logging = yes
port = 873 #使用端口
[www] #模塊名稱,隨便填
read only = yes #yes就是只讀
path = /home/www #要同步的目錄(多個用空格隔開)
comment = www #最好跟模塊名稱一樣
auth users = rsync #允許哪些用戶進行同步(後面需要設置)
secrets file = /etc/rsync.pas #用戶配置文件(用戶名+密碼)
hosts allow = 111.111.111.111 #允許進行同步的ip地址
exclude = tmp/123/ #不同步的目錄(相對路徑,多個用空格隔開)
創建存放密鑰的文件,上面secrets file的位置:
用戶名:密碼
e.g.
admin:admin
啟動xinetd,看下rsync能否啟動,873端口是否占用。
可以在server B用telnet進行測試一下是否能連通,如果配置了iptables需要開放873端口。
接下來配置客戶端,由於不是雙向同步,所以只要把rsync裝上去就好了。
設置密鑰文件(rsync運行時從裡面讀取)。我的放在/etc/rsync.pas ,內容就是上面設置的密碼。
下面就可以執行rsync命令進行同步了:
rsync -avz --password-file=/etc/rsync.pas [email protected]::www /home/www
avz這幾個參數我就不解釋了, rsync提供的參數好多好多。
--password-file就是上面的密鑰文件,@之前是服務端設置的賬號,@後面是服務端的ip,::www是模塊名稱, 同步到本地的/home/www 目錄。
如果命令執行成功了,就可以把上面的命令加入到crontab裡面,實現定時的文件同步了。