为了保证用户数据安全,准备了两台服务器,主服务器是生产环境,运行着业务系统服务,用户希望将主服务器上的业务数据(数据库备份及资料文件)定期备份到同一网段内的另外一台服务器上,由于数据量较大(主要是资料文件较大),最好实现每次增量备份,即每次只备份新增的数据。

rsync

rsync是一个开源实用程序,提供快速增量文件传输。rsync在GNU通用公共许可证下免费提供,目前由Wayne Davison维护。

示例环境

属性

版本

说明

主服务器系统

centos-release-7-5.1804.el7.centos.x86_64

生产环境,IP:192.168.1.121 。

从服务器系统

centos-release-6-5.el6.centos.11.1.x86_64

备份服务,IP:192.168.1.123 。

主服务器rsync

rsync version 3.1.3 protocol version 31

从服务器rsync

rsync version 3.0.6 protocol version 30

实践过程

安装rsync步骤忽略,主要介绍同步服务配置过程。

1. 主服务器配置:创建从服务器同步用户密码文件

echo "rsyncAdmin:123456" > /etc/rsyncd.secrets
chmod 600 /etc/rsyncd.secrets

2. 主服务器配置:创建提示信息

echo  "rsync  info"  >  /etc/rsyncd.motd

3. 主服务器配置:配置rsyncd.conf

# /etc/rsyncd: configuration file for rsync daemon mode

# See rsyncd.conf man page for more options.

# configuration example:

# uid = nobody
# gid = nobody
# use chroot = yes
# max connections = 4
# pid file = /var/run/rsyncd.pid
# exclude = lost+found/
# transfer logging = yes
# timeout = 900
# ignore nonreadable = yes
# dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

# [ftp]
#        path = /home/ftp
#        comment = ftp export area
motd file = /etc/rsyncd.motd
transfer logging = yes
log file = /var/log/rsyncd.log
port = 873
address = 192.168.1.121
uid = nobody
gid = nobody
use chroot = no
read only = no
max connections = 10

[common]
comment = rsync info
path = /home/backup
ignore errors
auth users = rsyncAdmin
secrets file = /etc/rsyncd.secrets
hosts allow = 192.168.1.0/255.255.255.0
hosts deny = *
list = false

关键属性:

  • address是指定主服务器IP。
  • [common]是同步标识。执行同步命令rsync时用来标识执行块。
  • path是指定同步目录。如示例,执行同步命令时将从主服务器/home/backup目录备份至从服务器指定目录中。
  • auth users是从服务器同步用户。
  • secrets file是指定存储从服务器同步用户密码的文件。

4. 主服务器配置:启动rsync服务并添加到开机启动

rsync  --daemon
echo  "rsync  --daemon"  >>  /etc/rc.local

5. 从服务器配置:创建密码文件

echo  "123456"  >  /root/passwd
chmod  600  /root/passwd

6. 从服务器配置:执行同步

拉取命令:

rsync -avz --password-file=/root/passwd rsyncAdmin@192.168.1.121::common /home/backup2/ >/home/backup/rsync.log 2>&1

根据/root/passwd密码文件验证从服务器用户rsyncAdmin,按照192.168.1.121地址下rsyncd.conf中[common]同步块信息,将主服务器/home/backup目录文件同步到从服务器/home/backup2目录下,并将标注日志和错误日志信息全部写入/home/backup/rsync.log文件中。

7. 从服务器配置:创建rsync.sh执行文件并设置定时任务

新建rsync.sh文件,并将第6步中命令写入后授予权限。

touch /home/rsync.sh
chmod 755  /home/rsync.sh
crontab -e   ##进入编辑定时任务
0 0 * * * /home/rsync.sh ##每天0点执行rsync.sh脚本文件

注意事项

  1. 开启主服务器873端口,否则报错如下所示。
rsync: failed to connect to 192.168.19.121: No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(124) [receiver=3.0.6]