@TOC
1.Rsync企业应用场景
应用场景(业务场景) | 应用建议 |
---|
rsync作为命令使用 | 临时拉取,推送数据.未来这个需求可以通过scp命令实现. |
==定时备份:rsync服务+定时任务== | 定时备份,定期备份案例.(定时任务进行备份+通过rsync传输备份) |
实时同步:rsync服务+sersync/lsyncd实现实时同步 | 解决存储服务单点问题 |
rsync服务与异地容灾 | 找一个异地的服务器存放备份 |
把/etc/目录传输到另一台机器的/tmp/下面
scp -r /etc/sysconfig/ root@10.0.0.31:/tmp/
rsync -avz /etc/sysconfig/ root@10.0.0.31:/mnt/
2.Rsync使用模式
模式 | 应用场景 |
---|
本地模式(了解) | 不推荐使用 |
远程模式 | 传输数据(临时使用可以使用scp替代) |
rsync守护进程模式(daemon) | 传输数据(不需要密码),用于定时备份,定时同步. |
3.rsync远程模式:star::star::star::star::star:
格式 | | |
---|
rsync -a | 源文件 | 目标 |
推送:rsync | /etc/hostname | root@10.0.0.31:/tmp |
拉取:rsync | root@10.0.0.31:/etc/hosts | /opt/ |
#推送/etc/hostname 到10.0.0.31的/tmp/目录
rsync -avz /etc/hostname root@10.0.0.31:/tmp
4.守护进程模式:star::star::star::star::star:
服务使用流程 |
---|
:one:部署 |
:two:配置 |
:three:启动,使用 |
:four:优化 |
:five:故障 |
:six:自动化(监控,日志,安全,自动化部署,容器) |
4.1.检查是否安装
#关闭防火墙
systemctl disable firewalld
#检查安装 更新
yum install -y rsync
rpm -qa rsync
rpm -qi rsync
rpm -ql rsync
检查软件包内容
/etc/rsyncd.conf #配置文件(服务端配置文件,守护进程模式)
/usr/bin/rsync #命令
/usr/lib/systemd/system/rsyncd.service #systemctl控制rsyncd服务的配置文件
4.2.进行配置
4.2.1.配置文件详解【rsyncd.conf】

4.2.2.进行配置
vim /etc/rsyncd.conf
#created by dange
## rsyncd.conf start ##
fake super=yes
uid = rsync
gid = rsync
use chroot = no
max connections = 2000
timeout = 600
pid file = /var/run/rsyncd.pif
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
#hosts allow = 10.0.0.0/24
#hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
##################################
[data]
comment = www by dange
path = /data
4.2.3.后续配置【目录、用户、权限、密码文件】
#1.添加虚拟用户
useradd -s /sbin/nologin -M rsync #添加虚拟用户
#2.创建密码文件
# 密码文件格式: 用户名:密码
echo 'rsync_backup:123456' >/etc/rsync.password #用户名:密码
chmod 600 /etc/rsync.password
#3.共享目录与权限
mkdir /data #创建共享目录
chown -R rsync.rsync /data/


4.2.4.确保文件正确并查验


4.2.5.启动服务-检测状态
systemctl start rsyncd
systemctl enable --now rsyncd
systemctl status rsyncd
#检查进程
ps -ef |grep rsync
#检查端口
ss -lntup |grep rsync



4.2.6.访问测试
rsync守护进程模式客户端命令 | | |
---|
rsync -avz | /etc/hosts | rsync_backup@10.0.0.7::data |
| | rsync_backup是服务端配置文件中的认证用户 |
| | data表示模块中的名字 |
4.2.6.1.本地测试
rsync -av /etc/hostname rsync_backup@backup::data



4.2.6.2.远程测试



4.2.6.3.免密码传输数据到服务端

4.3.rsyncd服务与客户使用流程
部署流程 | |
---|
服务端 | :one:配置文件 |
| :two:添加虚拟用户 |
| :three:secret文件,密码文件,文件权限 |
| :four:创建共享目录和修改权限 |
| :five:启动或重启,开机自启动 |
| :six:测试 |
客户端 | :one:密码文件,权限 |
| :two:客户端命令测试 |
4.4.守护进程
4.4.1.深刻理解uid,gid,,authr user,secret file
1.用户执行命令:rsync -avz /tmp/etc.tar.gz rsync_backup@backup::data --password-file=/etc/rsync.client
2.服务端收到数据:判断rsync_backup用户,然后等待输入密码
3.把用户名和密码与配置文件里面对比 auth user 和secrets file
4.通过后,传输数据
5.数据到达服务器所有者被修改为uid和gid指定的(rsync)
6.数据写入data模块(/data/)目录下面.

4.4.2.免密的方式连接服务端(命令行指定客户端密码文件):star::star::star::star::star:
echo '123456' >/etc/rsync.client
chmod 600 /etc/rsync.client
rsync -avz /etc/hosts rsync_backup@backup::data --password-file=/etc/rsync.client
4.4.3.访问控制-安全措施
- hosts allow 只准许指定的ip或网段访问.
- hosts deny 拒绝.
配置只准许172.16.1.0/24 网段访问

5.rsync选项
rsync选项 | 含义 |
---|
-a | -rlptgoD<br/>-r递归复制<br/>-l复制软连接<br/>-p保持权限不变<br/>-m保持修改时间不变<br/>-o所有者不变<br/>-g用户组不变<br/>-D --devices --specials 设备与特殊文件 |
-v | 显示过程 |
-z | 传输数据的时候进行压缩(公网) |
-p | 显示每rsync -av . root@10.0.0.31:/tmp/ --exclude=04<br/>rsync -av . root@10.0.0.7:/mnt --exclude={04,05}个文件传输过程(进度条)断点续传 <br/>- -partial --progress |
--bwlimit | 限速,注意不要与-z一起使用. |
--exclude<br/>--exclude-from | 排除 |
--delete | 目标目录与源目录保持一致的传输(高度保持2遍一致,实时同步) |
限速并传输
rsync -aP --bwlimit=500kb /tmp/1g 10.0.0.7:/mnt/


# 传输并排除
rsync -av . root@10.0.0.31:/tmp/ --exclude=04
rsync -av . root@10.0.0.31:/tmp --exclude={04,05}
# 通过文件内容进行排除
[root@backup /oldboy]# cat /tmp/paichu.txt
03
05
10
[root@backup /oldboy]# rsync -av . root@10.0.0.31:~ --exclude=/tmp/paichu.txt
6.脚本文件rsyncd_bak_conf.sh
vim rsyncd_bak_conf.sh
#!/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
#1.vars
ip=`hostname -I | cut -d" " -f2`
bak_dir=/backup/$ip
date=`date +%F_%w`
bak_file=conf-${date}.tar.gz
rsync_user=rsync_backup
rsync_server_ip=172.16.1.41
rsync_mo=data
rsync_pass=/etc/rsync.client
#2.目录检查
if [ ! -d ${bak_dir} ];then
mkdir -p ${bak_dir}
fi
#3.打包压缩
tar zcf ${bak_dir}/${bak_file} /etc/
#4.传输备份到rsync服务端
echo '123456'>/etc/rsync.client
chmod 600 /etc/rsync.client
rsync -av /backup/ rsync_backup@${rsync_server_ip}::data --password-file=/etc/rsync.client
7.任务项目
项目要求:
- :one:定时备份nfs01,web01配置文件(etc,定时任务) /backup/ip地址/conf-时间.tar.gz 也可以说2个备份软件包.
- :two:定时备份nfs01,web01同步到backup服务器上/backup/
- :three:定时备份nfs01,web01删除7天之前的备份
- :four:在backup服务器,每天发送邮件备份结果(find或tree)
- :five:检查:邮箱是否收到邮件,检查备份服务器上是否收到了备份
备份服务器
/backup/
172.16.1.31/xxxx.tar.gz
172.16.1.7/xxxx.tar.gz
8. 故障记录

[19:53:45 root@nfs01 ~]# rsync -avz /tmp/etc.tar.gz rsync_backup@backup::data --password-file=/etc/rsync.client
rsync: failed to connect to backup (172.1.16.7): Connection refused (111)
rsync error: error in socket IO (code 10) at clientserver.c(125) [sender=3.1.2]


[17:36:53 root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup::data --passwd-file=/etc/rsync.client
rsync: --passwd-file=/etc/rsync.client: unknown option
rsync error: syntax or usage error (code 1) at main.c(1568) [client=3.1.2]

[17:39:01 root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup::data --password-file=/etc/rsync.client
rsync: getaddrinfo: rsync_backup 873: Name or service not known
rsync error: error in socket IO (code 10) at clientserver.c(125) [sender=3.1.2]
endl
评论