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,整体分为两个部分:全局参数和模块参数
- 全局参数 :对于rsync 服务器生效。如果模块参数和全局参数冲突,针对冲突的模块,模块参数生效(模块参数优先级高于全局参数)
- 模块参数: 定义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服务(两种方式)
- rsync –daemon (rsync –daemon –help 查看帮助信息)
- 使用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
- 实现无交互脚本,备份数据-两种方法
- 声明RSYNC_PAASSWORD变量
- 从本地文件读取密码
脚本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