利用rsync进行网站之间的目录同步
功能:将服务端的目录定时同步到各个客户端
一、服务端(被同步端)配置
1、安装rsync
一般centos自带rsync,如果没有,用yum安装rsync以及xinetd
#yum install rsync xinetd
xinetd为守护进程,如果不安装xinetd也可以通过命令行启动rsync服务端
2、开启rsync
开启服务
#vim /etc/xinetd.d/rsync
disable = no //把disable = yes改成no
或者执行以下命令也能开启服务
#chkconfig rsync on
3、配置rsync
# vi /etc/rsyncd.conf (这个文件如果不存在自己创建)
#Global Settings
#以什么身份运行rsync
uid = root
gid = root
#不使用chroot
use chroot = no
#最大连接数
max connections = 20
#密码文件位置,认证文件设置,设置用户名和密码
secrets file = /etc/rsyncd.secrets
#指定rsync的日志文件,而不将日志发送给syslog
log file = /var/log/rsyncd.log
#指定rsync的pid文件
pid file = /var/run/rsyncd.pid
#指定支持max connections参数的锁文件,默认值是/var/run/rsyncd.lock
lock file = /var/run/rsync.lock
comment = hello world
#欢迎信息文件名称和存放位置(此文件没有,可以自行添加)
#motd file = /etc/rsyncd.motd
#
# 这里是认证的模块名,在client端需要指定
[backup]
# 需要做镜像的目录
path = /var/www/default
# 授权帐号。认证的用户名,如果没有这行,则表明是匿名,多个用户用,分隔
auth users = rsync
# yes只读 值为NO意思为可读可写模式,数据恢复用NO
read only = yes
#允许访问的服务器IP
hosts allow = 192.168.3.128
#黑名单
hosts deny = *
# 允许列文件
list = true
# 可以忽略一些无关的IO错误
#ignore errors
#忽略的目录
#exclude = cache/111/ cache/222/
设置访问(认证)的用户名密码
# vi /etc/rsyncd.secrets
#用户名:密碼
rsync:111111
给文件正确的权限
# chown root:root /etc/rsyncd.secrets
# chmod 600 /etc/rsyncd.secrets #(必须是600)
4、启动
一般通过xinetd守护进程启动:
service xinetd restart
也可以通过命令行直接启动:
/usr/bin/rsync --daemon
二、客户端同步
先创建密码文件
#vi /etc/rsyncd.pas
111111
注意,客户端的密码文件只需要密码,而不需要用户名!密码和服务器一致
更改文件权限:
#chmod 0600 /etc/rsyncd.pas
执行同步命令:
rsync -vzrtopgu --progress --delete --password-file=/etc/rsyncd.pas rsync@xxxx.net::backup /var/www/default
xxxx.net为服务端网站名称
rsync为登录用户名
backup 为指定同步的模块(服务端配置文件中的backup名称)
同步的本地路径为/var/www/default
-vzrtopg里的v是verbose,z是压缩传输,r是recursive,topg都是保持文件原有属性如属主、时间的参数。
u是只同步已经更新的文件,避免没有更新的文件被重复更新一次,不过要注意两者机器的时钟的同步。
–progress是指显示出详细的进度情况,
–delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。
将命令放入crontab中可以定时和服务器目录同步:
#crontab -e
30 6 * * * /usr/bin/rsync -vzrtopgu --progress --delete --password-file=/etc/rsyncd.pas rsync@xxxx.net::backup /var/www/default
每天6:30进行同步
发表评论