rsync
Rsync基本概述
rsync是一款开源、快速、多功能、可实现全量及增量的本地或远程数据同步备份的优秀工具。rsync软件适用于Unix/Linux/Windows等多种操作系统平台。
全量备份
将客户端的内容完全备份到服务端
增量备份
基于上一次的全量备份,将新增的备份过去
将服务端没有的文件从客户端增量备份过去
scp
# 不支持增量备份
# 推
scp 源文件 用户名@IP:对方路径
scp 5.png root@172.16.1.31:/tmp/
# 拉
scp 用户名@IP:对方路径 本地路径
scp root@172.16.1.31:/tmp/5.png /tmp
# 选项
-r 递归远程拷贝目录
rsync
c:client 客户端
s:server 服务端
c/s:客户端/服务端
b:browser 浏览器
s:server 服务端
b/s:浏览器/服务端
常用服务端口
rsync:873
http:80
http:443
ssh :22
telnet:23
rdp:3389
ftp:21
mariadb:3306
# 查看本机端口
netstat -lntup
rsync语法
本地
Local: rsync [OPTION...] SRC... [DEST]
rsync 选项 源文件 目标路径
# 案例 rsync ip.sh /tmp/ 类似于cp命令
远程
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
# 拉 rsync [选项] 用户名@IP:目标路径 本地路径
# 案例 rsync -avz root@172.16.1.31:/opt/* /opt/
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
# 推 rsync [选项] 本地路径 用户名@IP:目标路径
# 案例 rsync -avz ./* root@172.16.1.7:/opt/
守护进程
Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
# 拉 rsync [选项] [匿名用户名@]IP::模块名/目标文件 本地路径
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC...
# 推 rsync [选项] 本地路径 [匿名用户名@]IP::模块名
rsync://[USER@]HOST[:PORT]/DEST
#特性
# rsync 无论推还是拉都是可以实现增量备份
# 需要知道远端的用户名和正确密码
rsync选项
-a 归档模式传输 = rtpoglD
-----------------------------
-r 传递传输
-t 保持文件时间属性
-p 保持文件权限
-o 保持文件的属主信息
-g 保持文件属组信息
-l 保留软链接
-D 保持设备文件信息
------------------------------
-v 详细信息输出,打印速度,文件数量
-z 过程中打包压缩,速度快
环境准备
wanIP | LanIP | 主机 | 角色 |
---|---|---|---|
10.0.0.31 | 172.16.1.31 | nfs | rsync客户端 |
10.0.0.41 | 172.16.1.41 | backup | rsync服务端 |
c/s
c client
s server
配置服务端
# 安装rsync
yum install -y rsync
# 查询rsync配置文件所在位置
rpm -qc rsync
# 编辑配置文件
uid = rsync # 服务启动用户
gid = rsync # 服务启动的用户组
port = 873 # 服务启动的端口873 (0~65535)
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 # rsync日志路径
#####################################
[backup] # 模块名
comment = welcome to oldboyedu backup! # 模块的注释信息
path = /backup # 定义接收备份数据的目录路径
# 创建用户
useradd rsync -s /sbin/nologin -M
# 创建备份目录
mkdir /backup
# 授权备份目录的属主和属组必须是服务端的
chown rsync.rsync /backup/
# 创建密码文件
echo 'rsync_backup:123' > /etc/rsync.passwd
[root@backup opt]# cat /etc/rsync.passwd
rsync_backup:123
# 授权rsync要求密码文件的权限是600
chmod 600 /etc/rsync.passwd
# 启动服务
systemctl start rsyncd
# 加入开机自启
systemctl enable rsyncd
# 检查进程
[root@backup opt]# ps -ef | grep rsync
root 17065 1 0 11:24 ? 00:00:00 /usr/bin/rsync --daemon --no-detach
root 17085 6973 0 11:26 pts/0 00:00:00 grep --color=auto rsync
# 检查端口
[root@backup opt]# netstat -lntup | grep 873
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 17065/rsync
tcp6 0 0 :::873 :::* LISTEN 17065/rsync
配置客户端
# 安装rsync
yum install -y rsync
# 设置密码
echo '123' > /etc/rsyncd.pass
# 授权密码文件
chmod 600 /etc/rsyncd.pass
# 守护进程模式的推和拉
# 推
rsync -avz 1.sh rsync_backup@172.16.1.41::backup
# 拉
rsync -avz rsync_backup@172.16.1.41::backup/* /tmp
拓展选项
--exclude=PATTREN # 指定排除不需要的文件模式
--exclude-from=file # 文件名所在的目录
--bwlimit=100 # 限速传输
--partial # 断点续传
--delete # 让目标目录和源目录保持一致
# 免密传输
--password-file==xxx # 指定密码文件的路径,使用密码文件实现免密传输
# 指定端口
--port 端口