1 概述
rsync英文称为 Remote synchronizetion,是一种开源、高速、可实现本地及远程,全量及增量的数据复制(拷贝)工具。这个功能类似于 ssh 自带的 scp 命令,但又优于 scp 命令的功能,scp 每次都是全量拷贝,而 rsync 可以增量拷贝。当然,rsync 还可以在本地主机的不同分区或目录之间全量及增量的复制数据,这又类似 cp 命令。但是同样也优于 cp 命令,cp 每次都是全量拷贝,而 rsync 可以增量拷贝。
监听端口:873
运行模式:client / server
2 特性
- 支持拷贝特殊文件,如连接文件、设备等。
- 可以有排除指定文件或目录同步的功能,相当于打包命令tar的排除功能。
- 可以做到保持原文件或目录的权限、时间、软硬链接、属主、组等所有属性均不改变 –p。
- 可以实现增量同步,既只同步发生变化的数据,因此数据传输效率很高(tar-N)。
- 可以使用rcp、rsh、ssh等方式来配合传输文件(rsync本身不对数据加密)。
- 可以通过socket(进程方式)传输文件和数据(服务端和客户端)
- 支持匿名的活认证(无需系统用户)的进程模式传输,可以实现方便安全的进行数据备份和镜像。
3 rsync应用场景
增量备份:只推送修改、新建的文件。增量备份是针对于上一次备份(无论是哪种备份)备份上一次备份后(包含全量备份、差异备份、增量备份)所有发生变化的文件,耗时短。
全量备份:所有数据都进行推送备份。全量备份就是指对某一个时间点上的所有数据或应用进行的一个完全拷贝,耗时长。
差异备份:备份自上一次完全备份之后有变化的数据。差异备份过程中,只备份有标记的那些选中的文件和文件夹。它不清除标记,也即备份后不标记为已备份文件。换言之,不清除存档属性。差异备份是指在一次全备份后到进行差异备份的这段时间内,对那些增加或者修改文件的备份。在进行恢复时,我们只需对第一次全备份和最后一次差异备份进行恢复。
4 rsync传输方式
推送:备份(客户端将数据从本地上传至服务端)
拉取:下载(客户端将数据从服务端拉取至本地)
5 rsync传输模式
5.1 本地模式(类似cp,了解即可)
# 例如
# /etc/ 和 /etc 区别
# /etc/ 是目录下面内容
# /etc 是目录+目录内容
rsync -a /etc/ /tmp/
rsync -a /etc /tmp/
5.2 远程模式
- 用户每次输入用户名与密码。
- 需要使用系统已经存在且可登录的用户(root)
- 每个用户都可以使用,在任何地方都可以使用。
- 一般用于临时传输数据。(scp / rsync)
5.3 守护进程模式(重点)
- 通过配置文件设置密码。
- 通过配置文件设置用户和密码。(设置个用户和密码)
- 可以通过配置控制ip、网段。
- 与定时任务配合定时传输数据。
6 环境准备
文件所属位置
# 检查安装包内容
/etc/rsync.conf # 配置文件
/usr/bin/rsync #命令
/usr/lib/systemd/system/rsyncd.service #systemctl对应的配置文件
7 数据同步
脚本同步(常用于客户端配置)
步骤1:编写脚本
步骤2:运行脚本
sh /server/scripts/bak_conf.sh
定时同步
步骤1:进入 crontab 配置文件
crontab -e
步骤2:设置定时任务(每天0点备份)
# 2. backup sys conf
0 0 * * * sh /server/scripts/bak_conf.sh &>>/tmp/backup.log
实时同步
rsync 是不支持实时同步的,通常我们借助于 inotify 这个软件来实时监控文件变化,一旦inotify 监控到文件变,则立即调用 rsync 进行同步。
增加校验功能
检查数据是否变化使用md5
例子:
创建txt文件
写入内容
创建md5sum指纹信息
检查md5sum指纹信息
修改txt文件的内容
创建md5sum指纹信息
安全防护措施
给命令和较为固定
服务端:
检查同步文件传过来的备份数据,并且做了md5文件校验。
【Shell脚本】rsync服务端-备份数据检查-CSDN博客
8 rsync实际使用
命令格式
rsync -a | 源文件 | 目标 |
推送:rsync | /etc/hostname | root@10.0.0.31:/tmp |
拉取:rsync | root@10.0.0.31:/etc/hostname | /tmp |
选项 | 含义 |
-a | -r 递归复制 -l 复制软连接 -p 保持权限不变 -m 保持修改时间不变 -o 所有者不变 -g 用户组不变 |
-v | 显示过程 |
-z | 传输数据的时候进行压缩(公网) |
rsync常用命令
# 查看用户
id rsync
# 查看用户信息
grep rsync /etc/passwd
# 查看端口信息
ss -lntup | grep rsync
# 查看日志信息
tail -f /var/log/rsyncd.log
# 查询命令
rpm -qa | grep rsync
参数 | 说明 |
---|---|
-a | 归档模式传输, 等于-tropgDl -t -r -o -p -g -D -l |
-v | 详细模式输出, 打印速率, 文件数量等 |
-z | 传输时进行压缩以提高效率 |
-r | 递归传输目录及子目录,即目录下得所有目录都同样传输 |
-t | 保持文件时间信息(stat命令查看文件时间,a/m/ctime) |
-o | 保持文件属主信息 |
-g | 保持文件属组信息 |
-p | 保持文件权限 |
-l | 保留软连接 |
-P | 显示同步的过程及传输时的进度等信息 |
-D | 保持设备文件信息 |
-L | 保留软连接指向的目标文件 |
-e | 使用的信道协议,指定替代rsh的shell程序 |
--append | 指定文件接着上次传输中断处继续传输(断点续传) |
--append-verify | 使用参数续传(在断点续传之后,验证一下文件,如果不同,修复文件) |
--exclude=PATTERN | 指定排除不需要传输的文件 |
--exclude-from=[文件路径] | 按照文件指定内容排除 |
--bwlimit=100 | 限速传输(单位:MB) |
--delete | 让目标目录和源目录数据保持一致 |
--password-file=[密码文件路径] | 使用密码文件 |
--port | 指定端口传输 |
限速测试
步骤1:创建 500兆文件
dd if=/dev/zero of=/tmp/500m bs=1M count=500
步骤2:确保服务器开启了 rsync 服务
步骤3:运行限速传输 限速每秒500kb
rsync -a -P --bwlimit=500kb /tmp/500m-v2 rsync_backup@10.0.0.41::data --password-file=/etc/rsync.client
文件过滤
步骤1:创建多个文件
touch cherry-{01..10}.txt
步骤2:传输过滤
rsync -av . rsync_backup@172.16.1.41::data --password-file=/etc/rsync.client --exclude=cherry-{01..09}.txt
保持源与目标数据一致(危险命令)
原本备份一般默认是增量备份,但是加上了 --delete 后,当前目录为源目录,另外需要备份的目录中假如有异于源目录的文件或者文件夹将被删除,并替换成源目录的文件。
rsync -avP --delete . rsync_backup@10.0.0.31::data --password-file=/etc/rsync.client
9 项目/任务(用途)
项目要求:
1 定时备份nfs01,web01配置文件(etc,定时任务) /backup/ip地址/conf-时间.tar.gz 也可以说2个备份软件包。
2 定时备份nfs01,web01同步到backup服务器上 /backup/
3 定时备份服务nfs01,web01删除7天之前备份
4 在backup服务器,每天发送邮件备份结果(find或者tree)
5 检查:邮箱是否受到邮件,检查备份服务器上是否收到了备份。
备份服务器
/backup/
172.16.1.31/xxx.tar.gz
172.16.1.7/xxx.tar.gz
提出问题
备份规划以及内容,如何备份?如何收集备份(统一存放备份)?保留多长时间?是什么系统?什么系统版本?等
备份什么?
- (用户)数据、数据库、存储
- 配置文件
- 脚本、代码...
- 日志收集
- ......
如何备份?
打包压缩 + 定时任务
如何收集?
rsync服务收集备份
至此,rsync 的大致需要掌握的已经完成!!!
如果觉得内容不错,请留下一个小小的点赞/V▲V\