1. 概述
特点:
1. rsync是个服务也是命令
2. 使用方便,具有多种模式
3. 传输数据的时候是增量传输
1.1 增量与全量
1. 增量:只会把修改,新建的内容推走
2. 全量:无论数据多少全部推送
1.2 把/etc/目录传输到另一台机器的/tmp/下面
方法1:scp -r /etc/sysconfig/ root@10.0.0.31:/tmp/
方法2:
rsync -avz /etc/sysconfig/ root@10.0.0.31:/mnt/
2. Rsync应用场景
应用场景 应用建议 rsync作为命令使用 临时拉取,推送数据.未来这个需求可以通过scp命令实现 定时备份:rsync服务+定时任务 定时备份,定期备份案例 rsync服务+sersync/lsyncd实现实时同步 解决存储服务单点问题 rsync服务与异地容灾 找一个异地的服务器存放备份
3. Rsync使用模式
模式 应用场景 远程模式 传输数据(临时使用可以使用scp替代) rsync守护进程模式(daemon) 传输数据(不需要密码),用于定时备份,定时同步.
4. rsync不同的模式
4.1 rsync本地模式
在rsync对于目录 /etc/ /etc 是有区别的.
/etc /etc目录+目录的内容
/etc/ /etc/目录下面的内容
4.2 远程模式
rsync -a 源文件 目标
##推送:
rsync /etc/hostname root@10.0.0.31:/tmp
##拉取
rsync root@10.0.0.31:/etc/hosts /opt/
4.2.1 推送/etc/hostname 到10.0.0.31的/tmp/目录
rsync /etc/hostname root@10.0.0.31:/tmp/
4.2.2 推送/etc 目录及目录内容 到10.0.0.31的 /tmp下面
推送第1次 全量
rsync -av /etc root@10.0.0.31:/tmp/
推送第2次 发现没有推送
创建文件再次推送
#创建文件
touch /etc/ xzb66.txt
#再次推送
rsync -av /etc root@10.0.0.31:/tmp/
通过scp推送 /etc 目录及目录内容 到10.0.0.31的 /opt 下面
scp -r /etc/ root@10.0.0.31:/opt/
## -r 递归传输
5. 守护进程模式
5.1 检查安装
##检查安装 更新
yum install -y rsync
##检查软件包内容
/etc/rsyncd.conf #配置文件
/usr/bin/rsync #命令
/usr/lib/systemd/system/rsyncd.service #systemctl对应的配置文件.
5.2 编写配置文件
#created by xzb 19:49 2024-9-29
##rsyncd.conf start##
fake super =yes ##如果不开启,则传输报错,伪装成root权限
uid = rsync ##rsync 运行的用户
gid = rsync ##rsync 运行的虚拟用户
use chroot = no
max connections = 2000
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log ##rsync服务端日志
ignore errors
read only = false
list = false
#hosts allow = 10.0.0.0/24 ##只允许改ip网段的人访问 白名单
#hosts deny = 0.0.0.0/32 ##黑名单
auth users = rsync_backup ##rsync服务端进行验证的用户:用户名
secrets file = /etc/rsync.password ##rsync服务端进行验证:密码
#####################################
[data] ## 模块名字,用户客户端访问服务端指定的名字
comment = www by xzb 19:49 2024-9-29 ##注释说明
path = /data ##模块对应的目录
5.3 启动服务
#启动服务
systemctl enable rsyncd
systemctl start rsyncd
5.4 检查端口,检查端口
ss -lntupps -ef |grep rsync
5.5 后续配置
#1.添加虚拟用户
useradd -s /sbin/nologin -M rsync
#2.创建密码文件
####密码文件格式:用户名:密码
echo 'rsync_backup:a' >/etc/rsync.password
chmod 600 /etc/rsync.password
#共享目录与权限
mkdir /data/
chown -R rsync /data/
5.6 本地测试
5.7 客户端测试
##将nfs01下的文件备份到10.0.0.31上
[root@nfs01_blog ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.31::data
5.7 免密码传输数据到服务端
##将密码写入rsync.client中
[root@nfs01_blog ~]# echo 'a' >/etc/rsync.client
##修改读写权限
[root@nfs01_blog ~]# chmod 600 /etc/rsync.client
##添加--password-file 参数
[root@nfs01_blog ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.31::data --password-file=/etc/rsync.client
6. rsync选项
rsync选项 含义 -a -rlptgoD -r递归复制 -l复制软连接 -p保持权限不变 -m保持修改时间不变 -o所有者不变 -g用户组不变-D devices specials 设备与特殊文件 -v 显示过程 -z 传输数据的时候进行压缩 --bwlimit 限速,注意不要与-z一起使用 --exclude 排除 --delete 目标目录与源目录保持一致的传输
6.1 限速并传输
rsync -aP --bwlimit=500kb /etc/hostname 10.0.0.31:/tmp/
6.2 传输并排除
##排除04,05
rsync -avz /data/ root@10.0.0.31:/tmp/ --exclude={04,05}.txt
6.3 保持源与目标数据一致
7. 全网备份
7.1 环境准备
角色 | 主机 | 运行服务 |
存放备份 | back_up_xing | rsync服务端 |
生成备份 | nfs01_blog | rsync客户端 |
7.2 项目步骤
步骤说明 详细内容 rsync服务端并调试 服务端配置/backup/目录 rsync客户端节点配置脚本 1.备份
2. 推送
3. 清理
其他节点匹配值定时任务 定时运行脚本 在备份服务器上检查并发送结果邮件 rsync服务端检查备份并发送邮件
7.3 rsync服务端调试
##在/etc/rsyncd.conf中配置
[backup]
comment = 收集备份
path = /backup/
##创建目录
mkdir -p /backup/
##共享权限和目录
chown -R rsync /backup/
##远程测试
7.4 客户端备份脚本
#!/bin/bash
##############################################################
# File Name:23-rsync.sh
# Version:V1.0
# Author:xzb996
# Desc:备份配置文件
##############################################################
#1.vars
ip=`hostname -I |awk '{print $1}'`
time=`date +%F_%w`
backup_dir=/backup/$ip/
#2.备份
mkdir -p $backup_dir
tar zcf $backup_dir/conf-$time.tar.gz /etc/#3. 推送
rsync -avz /backup/ rsync_backup@172.16.1.31::backup --password-file=/etc/rsync.client
#4. 清理
find backup_dir -type f -name "*.tar.gz" -mtime +7 |xargs rm -f
客户端备份成功
服务端备份成功
7.5 服务端脚本调试
#!/bin/bash
##############################################################
# File Name:23-rsync.sh
# Version:V1.0
# Author:xzb996
# Desc:检查备份与清理备份
##############################################################
time=`date +%F_%w`
##检查
tree /backup/ |mail -s "备份结果 $time" youxiang@qq.com
##清理备份
find /backup/ -type f -name "*.tar.gz" -mtime +180|xargs rm -f