内容目录

备份基本概述

什么是备份

  • 备份就是把文件在复制一份存放起来(简单说就是给源文件增加一个副本)
  • 快照类型:
  • 日志类型:操作记录
  • 集群方案: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监听端口:873
    • rsync运行模式:C/S

Rsync同步模式

  • 推:所有主机推送本地数据至Rsync备份服务器,会导致数据同步缓慢(适合少量数据备份)

file

  • 拉:rsync备份服务端拉取所有主机上的数据,会导致备份服务器开销大

file

Rsync应用场景

  • 大量服务器备份场景

file

  • 异地备份场景

file

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拉取数据示例:
# 拉取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规则
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)
  • 拉取远端数据:远端与本地保持一致,远端没有本地会被删除,造成客户端数据丢失
  • 推送数据至远端:本地与远端保持一致,本地没有远端会被删除,造成服务器端数据丢失

推送数据限速场景

最后修改日期: 2024年4月13日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。