内容目录
备份基本概述
什么是备份
- 备份就是把文件在复制一份存放起来(简单说就是给源文件增加一个副本)
- 快照类型:
- 日志类型:操作记录
- 集群方案:A B C相同机器,组成集群,统一对外提供
为什么要做备份
- 数据非常的重要
- 减少数据丢失的几率
- 便于快速的恢复
能不能不做备份
- 可以,对于不是特别重要的数据可以不考虑
- 重要:用户录入的数据
- 不重要:软件(配置文件),因为有了assible
备份应该怎么做
- 完全备份(全备,效率低下、占用空间、浪费带宽)
- 增量备份(增备,效率较高、节省空间、节省带宽)
实现备份的工具
- 备份通常使用什么工具
- 本地备份:
cp
- 远程备份:
scp、rsync
scp -rp /etc/ root@x.x.x.x:/tmp/
- 本地备份:
Rsync基本概述
什么是Rsync
rsync
简称远程同步,可以实现不同主机之间的同步,同时支持增量和全量的同步,备份。- windows<--->linux
- linux<--->linux
- linux<--->macos
- macos<--->windows
rsync
监听端口:873rsync
运行模式:C/S
Rsync同步模式
- 推:所有主机推送本地数据至
Rsync
备份服务器,会导致数据同步缓慢(适合少量数据备份)
- 拉:
rsync
备份服务端拉取所有主机上的数据,会导致备份服务器开销大
Rsync应用场景
- 大量服务器备份场景
- 异地备份场景
Rsync传输方式
rsync
使用三种主要的数据传输方式- 本地方式
- 远程方式:A--->B
- 守护进场:将
rsync
做为服务端使用
本地传输
- 本地传输方式:单个主机本地之间的数据传输(此时类似于
cp
命令) - 本地传输语法:
Local: rsync [OPTION...] SRC... [DEST]
- 本地拷贝数据示例:
rsync -avz /etc/passwd /tmp/
rsync # 备份命令
[options] # 选项
SRC... # 本地源文件
[DEST] # 本地目标文件
远程传输
- 远程传输方式:通过
ssh
通道传输数据,类似scp
命令 - 远程传输语法:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
Pull
拉取数据示例:
# 拉取远程文件
rsync -avz root@x.x.x.x:/etc/hostname ./
# 拉取远程目录下的所有文件
rsync -avz root@x.x.x.x:/root/ /backup/
# 拉取远程目录以及目录下的所有文件
rsync -avz root@x.x.x.x:/root /backup/
pull # 拉取,下载
rsync # 备份命令
[Options] # 选项
[USER@] # 目标主机的系统用户
HOST # 目标主机IP地址或域名
SRC... # 目标主机源文件
[DEST] # 下载至本地哪个位置
Push
推送数据示例
rsync -avz /backup/2024 root@x.x.x.x:/tmp/
Push # 推送,上传
rsync # 备份命令
[options] # 选项
SRC... # 本地源文件
[USER@] # 目标主机的系统用户
HOST # 目标主机IP地址或域名
[DEST] # 目标主机对应位置
- 注意事项:
rsync
借助ssh
协议同步数据存在的缺陷- 使用系统用户(不安全)
- 使用普通用户(会导致权限不足情况)
守护进程
- 守护进程传输方式:
rsync
自身非常重要的功能(不使用系统用户,更加安全) - 守护进程传输语法
- Pull:
rsync [OPTION...] [USER@]HOST::SRC... [DEST]
- Push:
rsync [OPTION...] SRC... [USER@]HOST::DEST
- Pull:
pull
拉取数据示例:
# 拉取rsync备份服务的"backup模块"数据至本地/mnt目录
rsync -avz rsync_backup@x.x.x.x::backup/ /mnt/ --password-file=/etc/rsync.password
rsync # 命令
[OPTION...] # 选项
[USER@] # 远程主机用户(虚拟用户)
HOST:: # 远程主机地址
SRC... # 远程主机模块(不是目录)
[DEST] # 将远程主机数据备份至本地什么位置
push
推送数据命令
rsync -avz /mnt/ rsync_backup@x.x.x.x::backup/ --password-file=/etc/rsync.password
rsync # 命令
[OPTION...] # 选项
SRC... # 本地位置
[USER@] # 远程主机用户(虚拟用户)
HOST:: # 远程主机地址
[DEST] # 备份至远程主机模块
常用选项
-a # 归档模式传输,等于-tropgDl
-v # 详细模式输出,打印速率,文件数量等
-z # 传输时进行压缩以提高效率
-r # 递归传输目录及子目录,即目录下的所有目录都同样传输
-t # 保持文件时间信息
-o # 保持文件属主信息
-p # 保持文件权限
-g # 保持文件属组信息
-l # 保留软连接
-p # 显示同步的过程及传输时的进度等信息
-D # 保持设备文件信息
-L # 保留软连接指向的目标文件
-e # 使用的信道协议
--exclude=PATTERN # 指定排除不需要传输的文件模式
--exclude-from=file # 文件名所在的目录文件
--bwlimit=100 # 限速传输
--partial # 断点续传
--delete # 让目标目录和源目录数据保持一致
Rsync场景实践
Rsync服务端安装
yum install rsync
Rsync服务端配置
- 按照如下方式修改配置
cat /etc/rsyncd.conf
uid = www
gid = www
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
#ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
#############
[uploads]
path = /website/wordpress/wp-content
- 配置详解
uid = www # 进程的写入用户身份
gid = www # 进程的写入的组身份
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
[uploads] # 定义模块信息
comment = commit # 模块注释信息
path = /website/wordpress/wp-content # 定义接收备份/同步数据目录
Rsync服务端初始化
rsync
服务端进行初始化- 1.创建
www
账户,不允许登录不创建家目录(用于rsync
进程的写入身份) - 2.创建备份/同步目录(尽可能磁盘空间足够大),授权
www
用户为属主 - 3.创建虚拟用户密码文件,授权为600安全权限(用于客户端连接时使用的用户)
- 4.启动
rsync
服务,并将rsync
加入开机自启动 - 5.简称
rsync
服务是否正常运行 - 6.腾讯云轻量云服务器的防火墙新建tcp873规则
- 1.创建
useradd -M -s /sbin/nologin www
chown - R www.www /website/wordpress/wp-content/uploads/
echo "xxx" >/etc/rsync.passwd
chomod 600 /etc/rsync.passwd
systemctl start rsyncd
systemctl enable rsyncd
netstat -lntp
Rsync客户端配置
rsync
客户端仅需配置虚拟用户的密码,并授权为600
安全权限- 方式一:适合终端执行,将虚拟用户密码配置至一个文件中
echo "xxx" > /etc/rsync.pass
chmod 600 /etc/rsync.pass
- 方式二:适合脚本执行,将虚拟用户密码设定为环节变量;
export RSYNC_PASSWORD=xxx
数据推送与拉取场景
-
客户端推送uploads目录及目录下所有内容至腾讯云轻量服务器实现同步
rsync -avz /website/wordpress/wp-content/uploads --password-file=/etc/rsync.pass rsync_backup@139.199.79.133::uploads
-
客户端拉取
rsync
服务端backup
模块数据至本地客户端的/backup
目录
数据无差异同步场景
rsync
实现本地数据与远程数据无差异同步(加--delete
)- 拉取远端数据:远端与本地保持一致,远端没有本地会被删除,造成客户端数据丢失
- 推送数据至远端:本地与远端保持一致,本地没有远端会被删除,造成服务器端数据丢失
留言