使用rsync做备份测试(存档)

目前整个网站使用ftp的方式通过bash脚本来备份,但是存在同步和效率的问题,准备转换到rsync的方式来进行,所以做了一下相关的测试。

rsync是一个文件同步传输的工具,通过其增量机制来实现web文件的备份和镜像。现在备份服务器一台,web文件服务器若干台,在web文件服务器上安装rsync服务,在备份服务器上使

用rsync客户端每晚定期执行cron,将各web文件通过增量形式集中备份。

测试的步骤如下:

一。在需要备份的文件服务器上安装rsync,并配置rsync选项,启动服务。

安装rsync;
# wget http://samba.anu.edu.au/ftp/rsync/rsync-3.0.0.tar.gz
# tar zxvf rsync-3.0.0.tar.gz
# cd rsync-3.0.0
# ./configure –prefix=/usr/local/rsync
# make
# make install

如果系统自带的rsync版本低请替换掉;

配置rsync;
# mkdir /usr/local/rsync/etc
# cd /usr/local/rsync/etc
# echo "root:root" > rsyncd.secrets
rsyncd.secrets是用户验证文件,包括用户名和密码
# vi rsyncd.conf
rsyncd.conf是rsync服务的配置文件,内容如下:

# pid文件的位置
pid file = /var/run/rsyncd.pid  
# 监听端口与IP地址
port = 873
address = xxx.xx.xx.xx
# 所属用户和组
uid = root
gid = root
use chroot = yes
# 只读,禁止使用rsync上传
read only = yes  
# 限制rsync的IP范围
hosts allow=xxx.xx.xx.xx/255.255.255.0
hosts deny=*
# 客户端的最大连接数
max connections = 5
# 定义服务器的现实信息,相当于banner
motd file = /usr/local/rsync/etc/rsyncd.motd
# 日志文件的位置和格式
log file = /var/log/rsync.log
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
# 定义rsync同步的项目
# 项目名称
[backupwebapp]
# 项目的文件夹位置
path = /data/webapp
# 是否显示文件夹目录和文件
list=yes
# 忽略IO错误
ignore errors
# 项目需要认证的用户
auth users = root
# 用户认证的用户和密码文件位置
secrets file = /usr/local/rsync/etc/rsyncd.secrets
# 项目描述,相当于banner
comment = Backup Zsxx fileServer 45 Webapp
# 忽略的不用rsync的目录
exclude = ftpuser/

启动rsync服务;
# /usr/local/rsync/bin/rsync –daemon –config=/usr/local/rsync/etc/rsyncd.conf

检查服务;
# ps -ef | grep rsync
# netstat -anp | grep rsync
列出当前rsync的项目
# /usr/local/rsync/bin/rsync –list-only xxx.xx.xx.xx::
列出backupwebapp项目的文件夹目录,输入定义的用户名和密码root:root
# /usr/local/rsync/bin/rsync –list-only xxx.xx.xx.xx::backupwebapp

一切OK。

二。 在备份服务器上配置客户端自动rsync

同样,先安装rsync;
客户端不需要配置rsync服务,使用rsync命令测试即可:
列出远程rsync服务的项目
# /usr/local/rsync/bin/rsync –list-only xxx.xx.xx.xx::
rsync同步测试,将远程的backupwebapp项目所定义的文件夹与本地的文件夹/data/backup/webapp/xx同步,输入定义的密码root:root即可
# /usr/local/rsync/bin/rsync -avzP root@xxx.xx.xx.xx::backupwebapp /data/backup/webapp/xx

为了让cron自动执行,还需要定义一个口令文件,以免手工输入口令
# echo "root" > /data/backup/webapp/rsync.password
在命令中添加–password-file参数即可
# /usr/local/rsync/bin/rsync -avzP –password-file=/data/backup/webapp/rsync.password root@xxx.xx.xx.xx::backupwebapp /data/backup/webapp/xx
把命令脚本加入cron中即可。

发表评论