在Centos系统下通过rsync备份数据

一、案例需求:

Rsync服务器端(www.itkylin.com,ip:192.168.1.2)是一台Samba文件服务器,主要提供给内部网络用户的文件存储,现需要将samba数据通过rsync方式同步备份至另一台机器(rsync客户端)。也就是Rsync服务器端开启rsync服务,rsync客户端通过rsync向Rsync服务器端取数据的程。最后只需设置rsync客户端crontab定时器在指定的时间执行备份脚本即可实现每天同步备份数据防止数据丢失。

注:本列仅限Centos系统下安装配置,Ubuntu系统可参考本站文章:在Ubuntu系统下通过rsync备份数据库

二、Rsync服务器端的安装配置(源数据是保持在服务器端):

#CentOS默认是以xinetd方式运行rsync服务,所以我们通过yum方式安装rsync的同时也把xinetd也安装上:

1
yum install rsync xinetd

#通过vi命令编辑/etc/xinetd.d/rsync文件,修改disable = yes为disable = no (注:wq!是vi的命令,表示强制保存退出,以下均同!)

1
2
3
4
5
6
vi /etc/xinetd.d/rsync
#change:
#disable = yes
#to:
disable = no
:wq!

#设置开机启动rsync服务

1
2
chkconfig rsync on
service xinetd restart

#创建rsyncd目录,通过vi创建并编辑rsyncd.conf配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
mkdir /etc/rsyncd
vi /etc/rsyncd/rsyncd.conf
uid = root
gid = root
use chroot = no
#read only = yes
read only = false
hosts allow = 192.168.1.0/24,www.itkylin.com, itkylin.com
hosts deny = *
max connections = 5
pid file = /var/run/rsyncd.pid
secrets file = /etc/rsyncd/rsyncd.secrets
#lock file = /var/run/rsync.lock
#motd file = /etc/rsyncd/rsyncd.motd
log file = /var/log/rsync.log
transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
 
[sambabak]
path = /usr/filedate
list=yes
ignore errors
auth users = itkylin
comment = Samba Bak
#exclude = itkylin

:wq!

#创建rsyncd.conf软连接

1
ln -s /etc/rsyncd/rsyncd.conf /etc/rsyncd.conf

#通过vi创建并编辑rsyncd.secrets用户密码对文件(注:服务器端是用户名:密码对格式;客户端就只有密码,没有用户名!)

1
2
vi /etc/rsyncd/rsyncd.secrets
itkylin:password

:wq!

#设置密码文件权限

1
2
chown root:root /etc/rsyncd/rsyncd.secrets
chmod 600 /etc/rsyncd/rsyncd.secrets

三、Rsync客户端安装配置(客户端备份服务器端的数据,从服务器端取数据):

#安装rsync软件包,因为客户端只需要运行rsync命令,所以不强制安装xinetd

1
yum install rsync

#创建rsync目录用于存放rsyncd.secrets密码文件

1
mkdir /etc/rsync

#通过vi创建并编辑rsyncd.secrets用户密码对文件(注:服务器端是用户名:密码对格式;客户端就只有密码,没有用户名!)

1
2
vi /etc/rsync/rsyncd.secrets
password

:wq!

#设置密码文件权限

1
chmod 600 /etc/rsync/rsyncd.secrets

#rsync命令使用语法:

1
#/usr/bin/rsync [-参数] [--参数] [备份来源路径] [备份目的路径]

#手动执行rsync命令:

1
/usr/bin/rsync -avz --delete --password-file=/etc/rsync/rsyncd.secrets [email protected]::sambabak /8t/samba

四、Rsync客户端定时执行备份脚本程序:

#通过vi创建并编辑rsyncbak.sh脚本

1
2
3
vi /usr/sbin/rsyncbak.sh
#!/bin/sh
/usr/bin/rsync -avz --delete --password-file=/etc/rsync/rsyncd.secrets [email protected]::sambabak /8t/samba

:wq!

#设置rsyncbak.sh脚本可执行权限

1
chmod +x /usr/sbin/rsyncbak.sh

#vi编辑crontab设置定时器

1
2
vi /etc/crontab
25 20 * * * root /usr/sbin/rsyncbak.sh

:wq!

五、常见问题

5.1: 如果执行service xinetd restart命令时出现以下错误提示:
xinetd: 服务未能辨识

解决办法:
yum install xinetd
service xinetd restart

5.2: @ERROR: chdir failed
rsync error: error starting client-server protocol (code 5) at main.c(1530) [receiver=3.0.6]
rsync: opendir “.” (in xxxxxxx) failed: Permission denied (13)

解决办法一:取消selinux对rsync的限制:

1
2
/usr/sbin/setsebool -P rsync_disable_trans 1
service xinetd restart

解决办法二:禁止selinux :

1
2
3
4
5
vi /etc/selinux/config
#change:
#SELINUX=enforcing
#To:
SELINUX=disabled

:wq!
reboot