一、rsync 是什么?
rsync 是一个开源工具,主要功能是:
高效、安全地同步文件和目录,支持本地复制、SSH 协议下的远程复制,也可以作为守护进程(daemon)运行,实现类似 FTP 的文件服务功能。
二、rsync 的主要特点
增量同步 | 只同步发生变化的部分,减少网络传输量(基于“delta algorithm”差异算法) |
支持压缩 | 可使用 -z 参数进行压缩,提高传输效率 |
支持 SSH 加密 | 默认使用 SSH 通道加密传输,安全性高 |
保留权限信息 | 可以保留文件的权限、时间戳、软链接等元数据 |
支持守护进程模式 | 可以设置成服务端 rsyncd,在客户端通过 rsync:// 协议连接 |
假设客户端上有 file1 file2 file3 文件,服务端上有 file1 文件,现要将客户端上的数据备份至服务端
全量备份
将客户端所有的数据内容 file1 file2 file3 全部备份至服务端 (效率低下, 占用空间)
增量备份:
增量备份,将客户端的 file2 file3 增量备份至服务端 (提高备份效率,节省空间, 适合异地备份
三、rsync 的工作方式
命令选项
‐a #归档模式传输, 等于‐tropgDl
‐v #详细模式输出, 打印速率, 文件数量等
‐z #传输时进行压缩以提高效率
rsync 有两种使用模式:
1. 本地模式
Local: rsync [OPTION...] SRC... [DEST]
本地: 命令 选项参数 源文件 目标位置
最常见,适用于临时同步:
rsync -avz /local/dir/ user@remote:/remote/dir/
解释:
- -a:归档模式,保留权限等信息
- -v:详细输出
- -z:压缩传输
- /local/dir/:本地路径(尾部的 / 表示仅同步目录内容)
- user@remote:/remote/dir/:目标地址(远程)
2. SSH 远程模式
拉取远程虚拟机信息
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
拉取:
rsync: 命令
-avz: 参数
USER@: 用户
HOST: 主机IP地址 域名 主机名称
:SRC: 源文件
DEST: 目标位置/ 下载到本地的哪个目录
案例1
# 192.168.163.80拉取192.168.163.130上的/root/7.txt 到本地的当前目录
rsync -avz root@192.168.163.130:/root/7.txt ./
执行过程中需要192.168.163.130/root用户的密码
推送本机信息到远程虚拟机
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
push: 推送
rsync: 命令
-avz: 参数选项
SRC: 文件/文件的位置/目录
USER@ 用户名
HOST: ip地址主机名称 域名
DEST: 目标位置
案例2
#将本地a/b/c.txt文件夹及文件推送到192.168.163.80虚拟机中
mkdir -p a/b && touch a/b/c.txt
rsync -avz a root@192.168.163.80:/opt/
# 显示如下信息,上述命令完成
sending incremental file list
a/
a/b/
a/b/c.txt
sent 151 bytes received 47 bytes 30.46 bytes/sec
total size is 0 speedup is 0.00
小结
下载 远程服务器在前面
rsync -avz root@192.168.163.80:/etc/hosts .
上传: 远程服务器在后面 文件在前面
rsync -avz a/b root@192.168.163.80:/opt/
rsync结束SSH同步数据的缺陷
3. 守护进程模式(rsync 服务端)
- 适用于服务器部署 rsync 服务,供多个客户端访问(例如做备份服务器)
客户端可以访问方式:
rsync user@server::modulename
客户端:192.168.163.130
服务端:192.168.163.130
服务端负责「建用户、配密码、开共享」,客户端负责「连服务端、传数据」
四、rsync 服务端配置(rsyncd 模式)
1. 创建配置文件 /etc/rsyncd.conf
#配置服务
[root@backup ~]#cat /etc/rsyncd.conf
uid = rsync#运行进程的用户
gid = rsync#运行进程的用户组
port = 873#监听端口
fake super = yes#无需让rsync以root用户的身份运行,允许接收文件的完整属性
use chroot = no#禁锢推送的数据至某个目录,不允许跳出改目录
max connections = 200#最大连接数
timeout = 600#超时时间
ignore errors#忽略错误信息
read only = false#对备份数据可读写
list = false#不允许查看模块信息
auth users = rsync_backup#定义虚拟用户,作为连接认证的用户
secrets file = /etc/rsync.passwd#定义rsync服务用户连接认证密码文件路径
log file = /var/log/rsyncd.log#
[backup] # 定义模块信息
comment = commit # 模块注释信息
path = /backup # 定义接收备份数据目录
2.根据配置文件创建必要的数据
#1)创建rsync虚拟用户
[root@backup ~]useradd -M -s /sbin/nologin rsync
[root@backup ~]id rsync
uid=1001(rsync) gid=1001(rsync) groups=1001(rsync)
#2)创建密码文件
[root@backup ~]vim /etc/rsync.passwd
rsync_backup:123456
#3)修改密码权限为600
[root@backup ~]chmod 600 /etc/rsync.passwd
[root@backup ~]ll /etc/rsync.passwd
-rw——- 1 root root 20 Apr 8 11:54 /etc/rsync.passwd
#4)创建backup目录
[root@backup ~]mkdir /backup
[root@backup ~]ll -d /backup
drwxr-xr-x 2 root root 6 Apr 8 11:55 /backup
#修改目录的权限为rsync用户
[root@backup ~]ll -d /backup
drwxr-xr-x 2 root root 6 Apr 8 11:55 /backup
[root@backup ~]chown rsync.rsync /backup
[root@backup ~]ll -d /backup
drwxr-xr-x 2 rsync rsync 6 Apr 8 11:55 /backup
3.启动服务并加入开机自启
[root@backup ~]#systemctl start rsyncd
[root@backup ~]#systemctl enable rsyncd
4.测试检查 873端口
[root@backup ~]#netstat -tnulp
五、实际案例:备份网站数据到远程服务器
本地备份网站 /var/www/html 到远程服务器
rsync -azv /var/www/html/ user@192.168.1.100:/backup/html/
此命令的作用:
- 压缩传输整个网站目录内容
- 只同步变化的文件
- 避免每次都全量复制,提高效率
六、常用 rsync 命令总结
rsync -avz src/ dest/ | 同步本地目录 |
rsync -avz src/ user@remote:/dest/ | 本地 → 远程 |
rsync -avz user@remote:/src/ dest/ | 远程 → 本地 |
rsync –delete | 删除目标中源已删除的文件 |
rsync -n | 模拟执行(不实际同步) |
rsync -e ssh | 指定使用 SSH 作为传输协议 |
七、rsync 适合哪些运维场景?
- 服务器间文件定期备份
- Web 服务器部署代码同步
- 自动化增量备份脚本
- 日志文件集中备份
- 跨机房/机架定时数据复制
总结
1.rsync 增量 全量
2.rsync三种模式
本地模式 了解类似cp命令 优于cp
远程访问模式:
推送: 将本地的推送到目标服务器
rsync -avz a.txt root@172.16.1.7:/opt/
拉取: 将目标服务器的b.txt 下载到本地当前目录
rsync -avz root@172.16.1.7:/root/b.txt ./
守护进程模式:
服务端: 安装服务 配置服务 启动服务873
配置文件中的重点:
1.启动用户rsync 必须系统中存在的
2.游戏账号rsync_backup
3.游戏账号所在的文件 /etc/rsync.passwd 权限600
rsync_backup:123456
4.模块名称和文件上传的目录位置
[hehe]
path = /data
rwxr-xr-x rsync rsync /data
客户端
推送: rsync -avz a.txt rsync_backup@172.16.1.41::hehe
拉取: rsync -avz rsync_backup@172.16.1.41::hehe/a.txt ./
评论前必须登录!
注册