1,为什要搭建rsync服务器:

  • 使用rsync命令备份需要输入用户密码;
  • 使用ssh免秘钥无交互备份,需要生成密码文件并发送给客户端,且需要使用系统用户登录客户端;

结论:无论使用rsync命令,还是使用ssh免秘钥无交互备份,都需要使用系统用户,这样就会不安全;解决办法:搭建rsync服务器,不使用系统用户,实现数据备份。

2,方案说明:

  • 需要自己创建自己的配置文件: /etc/rsyncd.conf
  • 定义备份帐户
  • rsync 以daemon方式运行

3,创建配置文件,默认配置文件不存在,需要自己创建



[root@cdncenter scripts]# cat /etc/rsyncd.conf 
uid = root
gid = root
use chroot = yes
max connections = 10
strict modes =yes
port = 873
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
motd file=/etc/rsyncd.motd

[rhel5_warehouse]
path =  /mpeg/mirrors/yumwarehouse/rhel5/
ignore errors
read only = yes
list = no
hosts allow = 172.1.1.1/255.0.0.0
hosts deny = 0.0.0.0/0
auth users = root
secrets file = /etc/rsync.pas



4,配置文件详解

  • 配置文件/etc/rsyncd.conf,整体分为两个部分:全局参数和模块参数
  1. 全局参数 :对于rsync 服务器生效。如果模块参数和全局参数冲突,针对冲突的模块,模块参数生效(模块参数优先级高于全局参数)
  2. 模块参数: 定义rsync 输出的目录的参数。
  • 参数说明:

配置项

说明

配置方法

参数类型

uid

文件传输过程中,守护进程的用户身份。

运行进程的身份:一般情况下,采用默认值:root

全局参数

gid

文件传输过程中,守护进程的组身份。

运行进程的组:一般情况下,采用默认值:root

全局参数

address

监听IP地址

请根据实际情况填写

全局参数

port

Rsync的服务端口

一般情况下,采用默认值:873

全局参数

use chroot

锁定家目录。rsync被黑了,黑客无法在rsync运行的家目录之外创建文件,该选项设置为yes

该选项设置为yes

全局参数

max connections

指定允许的最大并发客户端连接数,如果配置为“0”,则表示没有限制。

请根据实际情况配置,如“4”

全局参数

strict modes

是否检查密码文件的权限:

yes:则密码文件只能被Rsync服务器运行身份的用户访问,其他任何用户不可以访问该文件

no:其他用户身份能够访问

请根据实际情况填写

全局参数

pid file

pid文件。存放进程ID。自动生成,以便于使用脚本终止进程

一般情况下,采用默认值“/var/run/rsyncd.pid”

全局参数

lock file

指定支持max connections参数的锁文件

一般情况下,采用默认值“/var/run/rsync.lock”

全局参数

log file

指定使用独立的日志文件的位置

举例:/var/log/rsyncd.log

全局参数

motd file

客户端登录后的弹出的信息。需要创建。

举例:/etc/rsyncd.motd

 

[rhel_warehouse]

共享模块名,自定义

客户端配置时需使用到

共享模块名

path

供备份的路径

请根据实际情况填写

模块参数

comment

描述

请根据实际情况填写

模块参数

ignore errors

可以忽略一些无关的IO错误

不需配置

模块参数

read only

以只读的方式 提供备份,即允许客户端下行同步,不允许上传

建议配置为:yes

模块参数

list

是否允许查看模块信息

建议配置为:yes

模块参数

hosts allow

允许连接该模块的客户端IP或者网段

单个IP地址,例如:192.167.0.1

整个网段,例如:192.168.0.0/24,或者是192.168.0.0/255.255.255.0

“*”则表示所有,默认是允许所有主机连接。

多个IP或网段中间用英文的”逗号”或者”空格”隔开

模块参数

hosts deny

指定不允许连接Rsync服务器的机器

请根据实际情况配置

模块参数

auth users

Rsync认证的用户名,指定备份的用户,和系统用户无关

一般情况下,采用默认值:root。必须和etc/rsync.pas文件中配置的认证用户保持一致

模块参数

secrets file

指点存放用户 和密码文件。格式: 用户名:密码

请根据实际配置创建认证用户和密码的文件。此处创建的是etc/rsync.pas,所以应当配置etc/rsync.pas

模块参数

  • 创建提示信息文件
[root@xuegod63 ~]# echo "welcome to backup server"  > /etc/rsyncd.motd



  • 创建密码文件,修改密码文件权限(重要)
#vi /etc/rsync.pas                           #按“i”键添加如下内容,为Rsync认证添加用户和密码。
root:coship
#chmod 600 /etc/rsync.pas                    #rsync.pas必须赋予600或者700权限,即仅文件属主有读写权限,而所属组和其他用户无任何权限,否则启动会报错。



权限设置不对的话身份验证会失败,会弹以下出错信息,当然,输错密码后,也会弹这个信息:



[root@Usvn~]# rsync -avz root@10.80.0.1::rhel5_warehouse /tmp/

welcome to backup server

Password:



  • 启动rsync服务(两种方式)
  1. rsync –daemon (rsync –daemon –help 查看帮助信息)
  2. 使用xinetd管理rsync。修改/etc/xinetd.d/rsync 配置文件,将disable = yes 改为 disable = no ,然后重启xinetd服务(service xinetd restart)
  • 测试备份:

   语法:rsync 选项 用户名@备份源服务器IP::共享模块名 目标目录



[root@storeMS tmp]# rsync -avz backup@10.80.0.1::rhel6_warehouse /tmp/rhel6/
welcome to backup server

Password:                                             #此处需要输入密码
receiving file list ... done
./
PyYAML-3.10-3.1.el6.x86_64.rpm
libyaml-0.1.3-4.el6_6.x86_64.rpm
m2crypto-0.20.2-9.el6.x86_64.rpm
openpgm-5.1.118-3.el6.x86_64.rpm



  • 实现无交互脚本,备份数据-两种方法
  1. 声明RSYNC_PAASSWORD变量
  2. 从本地文件读取密码

脚本1:



[root@storeMS tmp]# cat time.sh 
#!/bin/bash

export RSYNC_PASSWORD=coship
rsync -avz backup@10.80.0.1::rhel6_warehouse /tmp/rhel6/



脚本2:



[root@storeMS tmp]# echo "coship" >/etc/rsync.pas
[root@storeMS tmp]# chmod 600 /etc/rsync.pas                  #此步骤非常重要,否则会鉴权失败
[root@storeMS tmp]# cat time2.sh 
#!/bin/sh

rsync -avz --delete backup@10.80.0.1::rhel6_warehouse /tmp/rhel6/ --password-file=/etc/rsync.pas



备注:添加防火墙规则:

[root@xuegod63 ~]# iptables -A INPUT -p tcp --dport 873 -j ACCEPT