使用rsync配置远程文件同步
2007-10-19 kenthy#qingdaonews.com
################################################################
系统环境:RHEL5 [ 2.6.18-8.el5xen ]
软件环境:
rsync-2.6.8-3.1
rsync-2.6.9.tar.gz
openssh-server-4.3p2-16.el5
openssh-clients-4.3p2-16.el5
openssh-4.3p2-16.el5
openssh-askpass-4.3p2-16.el5
目标功能:
Server: 1.2.3.4/24
Client: 1.2.3.123/24
分别配置rsync服务端和客户端,实现对Server上的/var/www/html网站目录进行远程镜像和定期同步更新。
[官方参考文档:]
-----------------------------------------------------------
http://rsync.samba.org/documentation.html################################################################
一、安装rsync软件包
1、服务器和客户端使用同一个rsync软件包,可以从官方下载新的rsync源码包编译安装:
# wget
# tar zxvf rsync-2.6.9.tar.gz -C /usr/src/
# cd /usr/src/rsync-2.6.9
# ./configure
# make && make install
或者
2、本文中以RHEL5默认安装的rsync为例。(ssh等相关软件包亦可使用默认)
二、配置rsync服务器端
rsyncd.conf详细配置项可以参考man rsyncd.conf。
1、创建/etc/rsyncd.conf配置文件,内容如下:
uid = nobody //指定文件传输过程中的用户身份
gid = nobody //指定文件传输过程中的组身份
use chroot = no //是否启动目录chroot限制
max connections = 5 //指定允许的最大并发客户端连接数
port = 873 //指定服务监听的端口,若使用默认的873端口,此行可省略
address = 1.2.3.4 //指定服务监听的ip地址,默认为0.0.0.0。使用xinetd方式启动服务时此行被忽略
log file = /var/log/rsyncd.log //指定使用独立的日志文件的位置
pid file = /var/run/rsyncd.pid //保存pid到指定文件,以便于使用脚本终止进程
hosts allow = 1.2.3.123/32 //此行可用于设置允许的客户端范围
[www] //设置一个名为www的备份目录区段(模块),名称可自定义
path = /var/www/html //指定需要被用于远程备份的目录
comment = Whole Web Area //注释信息
read only = yes //该目录设置为只读,即至允许客户端下行同步,不允许上传。若需要进行上行还原数据,可以改为no
dont compress = *.gz *.tgz *.zip *.z *.bz2 *.tbz //对指定格式的文件不再进行压缩
auth users = bakuser1 //指定允许远程同步此目录的用户名。若使用匿名方式,此行和下行可以去掉
secrets file = /etc/rsyncd.users //指定用户名:密码数据库文件位置
2、创建rsyncd用户名:密码数据库文件/etc/rsyncd.users:
# echo 'bakuser1:1234' >> /etc/rsyncd.users
# chmod 600 /etc/rsyncd.users
3、设置启动方式,若文件同步动作不是很频繁,建议使用xinetd方式
1> 编辑/etc/xinetd.d/rsync文件,确认以下内容:
service rsync
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
2> 启动服务并做基本测试
# service xinetd restart
# service sshd start //配置并启动sshd服务(过程略)
# telnet 1.2.3.4 873 //rsyncd默认在873端口监听服务,可在客户端使用telnet连接测试
# chkconfig --level xinetd on
# chkconfig --level sshd on
三、rsync客户端的基本使用
rsync命令详细使用方法可以参考man rsync,若需要上行还原数据,将命令中备份源、目标交换即可。
# rsync 1.2.3.4:: //查看服务端可用的模块列表(如此处会显示www及注释信息)
# rsync //查看服务端www模块中的目录及文件列表(使用服务端rsyncd.users数据库中的用户进行验证)
# rsync //查看服务端/var/www/html目录中的内容(使用服务端的系统用户进行验证,如root)
2、对远程目录进行同步备份[同一条备份命令重复执行时将只进行更新增量备份]
# mkdir -p /backup/web1
# rsync -avz /backup/web1/ //将服务端www模块下的内容备份到本地/backup/web1目录中,其中-a表示使用归档文件方式(保留原有权限、属性、属主及符号连接等),-z表示使用压缩方式以加快数据传输
# rsync -avz /backup/ //使用ssh方式将远程的/var/www/html目录备份到本地/backup/目录下
# rsync -avz --delete /backup/web1/ //--delete选项用于同步目录,删除本地目录中多余的文件
四、设置定期远程同步任务
1、创建远程同步任务脚本
# vi /opt/run.rsync
#!/bin/bash
if [ `netstat -anp | grep rsync | wc -l` -gt 0 ] ; then #//若上一次rsync任务仍未完成,则跳过这次同步
echo "Prev rsync still running. Skip now. `date`" >> /var/log/messages
exit 1
else
RDIR='www/'
LDIR='/backup/'
RADD='1.2.3.4'
BAKUSER='wwwbackup'
PROG='/usr/bin/rsync'
OPTIONS='-arHvz --delete --checksum'
export RSYNC_PASSWORD='1234' #//设置此环境变量,则执行下条命令时不会提示输入密码
$PROG $OPTIONS $LDIR
fi
# chmod 700 /opt/run.rsync //为刚建立的脚本设置适当的权限
2、建立crontab计划任务,以定期进行同步备份(以每30分钟同步一次为例)
# chkconfig --level 2345 crond on
# service crond start
# crontab -e 添加如下计划任务:
*/30 * * * * /opt/run.rsync
############################## The End ##################################
阅读(2151) | 评论(0) | 转发(0) |