linux 综合架构 —— 备份服务
备份服务器说明
作用:
-
01. 数据备份的服务器
-
02. 进行日志统一保存
rsync服务
什么是rsync服务
- Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具
安装
yum install -y rsync
rsync软件使用方法
a 本地备份数据 相当于cp
rsync /etc/hosts /tmp/host_rsync
b 远程备份数据 想当与 scp
在使用rsync备份目录时:
-
备份目录后面有 / -- /oldboy/ : 只将目录下面的内容进行备份传输
-
备份目录后面没有/ -- /oldboy : 会将目录本身以及下面的内容进行传输备份
-
-r --- 递归复制传输数据
-
-p --- 保持文件属性信息不变
scp -rp /etc/hosts root@172.16.1.41:/backup rsync -rp /etc/hosts 172.16.1.41:/backup/hosts_rsync
c 替代删除命令 rm
- --delete 实现无差异同步数据
面试题: 有一个存储数据信息的目录, 目录中数据存储了50G数据, 如何将目录中的数据快速删除 ( 如果使用 rm /目录/* -rf 速度回很慢)
rsync -rp --delete /null/ 172.16.1.41:/backup
d 替代查看文件命令 ls
rsync /etc/hosts
rsync命令语法格式
-
SYNOPSIS
-
Local: rsync [OPTION...] SRC... [DEST]
-
本地备份数据:
-
src: 要备份的数据信息
-
dest: 备份到什么路径中
远程备份数据
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
[USER@] --- 以什么用户身份拉取数据(默认以当前用户)
hosts --- 指定远程主机IP地址或者主机名称
SRC --- 要拉取的数据信息
dest --- 保存到本地的路径信息
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
SRC --- 本地要进行远程传输备份的数据
[USER@] --- 以什么用户身份推送数据(默认以当前用户)
hosts --- 指定远程主机IP地址或者主机名称
dest --- 保存到远程的路径信息
守护进程方式备份数据 备份服务
-
01. 可以进行一些配置管理
-
02. 可以进行安全策略管理
-
03. 可以实现自动传输备份数据
Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
rsync服务部署安装过程
linux系统安装部署服务流程:
-
a 下载安装软件 yum
-
b 编写配置文件
-
c 搭建服务环境 备份的目录/目录权限
-
d 启动服务程序 开机自动启动
-
e 测试服务功能
rsync 配置
第一个历程:编写配置文件
如何配置
man rsyncd.conf
编写配置文件
##created by HQ at 2017 ###rsyncd.conf start## uid = rsync --- 指定管理备份目录的用户 gid = rsync --- 指定管理备份目录的用户组 port = 873 --- 定义rsync备份服务的网络端口号 fake super = yes --- 将rsync虚拟用户伪装成为一个超级管理员用户 use chroot = no --- 和安全相关的配置 max connections = 200 --- 最大连接数 同时只能有200个客户端连接到备份服务器 timeout = 300 --- 超时时间(单位秒) pid file = /var/run/rsyncd.pid --- 记录进程号码信息 1.让程序快速停止进程 2. 判断一个服务是否正在运行 lock file = /var/run/rsync.lock --- 锁文件 log file = /var/log/rsyncd.log --- rsync服务的日志文件 用于排错分析问题 ignore errors --- 忽略传输中的简单错误 read only = false --- 指定备份目录是可读可写 list = false --- 使客户端可以查看服务端的模块信息 hosts allow = 172.16.1.0/24 --- 允许传输备份数据的主机(白名单) hosts deny = 0.0.0.0/32 --- 禁止传输备份数据的主机(黑名单) auth users = rsync_backup --- 指定认证用户 secrets file = /etc/rsync.password --- 指定认证用户密码文件 用户名称:密码信息 [backup] --- 模块信息 comment = "backup dir by oldboy" path = /backup --- 模块中配置参数 指定备份目录
第二个历程:创建rsync服务的虚拟用户
useradd rsync -M -s /sbin/nologin
第三个历程: 创建备份服务认证密码文件
echo "rsync_backup:oldboy123" >/etc/rsync.password chmod 600 /etc/rsync.password
第四个历程: 创建备份目录并修改属主属组信息
mkdir /backup chown rsync.rsync /backup/
第五个历程: 启动备份服务
systemctl start rsyncd systemctl enable rsyncd systemctl status rsyncd
rsync 守护进程使用详解
rsync命令参数详细说明
-
-v, --verbose 显示详细的传输信息
-
-a, --archive 命令的归档参数 包含: rtopgDl
-
-r, --recursive 递归参数
-
-t, --times 保持文件属性信息时间信息不变(修改时间)
-
-o, --owner 保持文件属主信息不变
-
-g, --group 保持文件属组信息不变
-
PS: 如何让-o和-g参数生效,需要将配置文件uid和gid改为root,需要将 fake super参数进行注释
-
-p, --perms 保持文件权限信息不变
-
-D, 保持设备文件信息不变
-
-l, --links 保持链接文件属性不变
-
-L, 保持链接文件数据信息不变
-
-P, 显示数据传输的进度信息
-
--exclude=PATTERN 排除指定数据不被传输
-
--exclude-from=file 排除指定数据不被传输(批量排除)
-
--bwlimit=RATE 显示传输的速率 100Mb/8=12.5MB,企业案例: 马路(带宽-半) 人人网地方
-
--delete 无差异同步参数(慎用),我有的你也有,我没有的你也不能有
客户端做拉的操作: 恢复数据
-
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
-
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
客户端做推的操作: 备份数据
-
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
-
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
src: 要推送备份数据信息
[USER@]: 指定认证用户信息
HOST: 指定远程主机的IP地址或者主机名称
::DEST: 备份服务器的模块信息
rsync守护进程客户端配置
第一个历程: 创建一个秘密文件
echo "oldboy123" >/etc/rsync.password chmod 600 /etc/rsync.password
第二个历程: 进行免交互传输数据测试
rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
查看服务端是否有客户端上传的文件
守护进程多模块功能配置使用
在 /etc/rsyncd.conf 添加新的模块 dba dev
[dba] comment = "backup dir by oldboy" path = /dba [dev] comment = "backup dir by oldboy" path = /devdata
创建备份目录
mkdir /dba chown rsync.rsync /dba/ mkdir /devdata chown rsync.rsync /devdata/
重启服务
systemctl start rsyncd systemctl enable rsyncd systemctl status rsyncd
在 nfs01 装备测试环境
mkdir -p /oldboy mkdir -p /oldboy/{a..c} touch /oldboy/{a..c}/{1..3}.txt tree /oldboy
需求01: 将/oldboy目录下面 a目录数据全部备份 b目录不要备份1.txt文件 c整个目录不要做备份,使用 backup 模块
绝对路径方式
rsync -avz /oldboy --exclude=/oldboy/b/1.txt --exclude=/oldboy/c/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
备份服务器查看
tree /backup/oldboy/
相对路径方式
rsync -avz /oldboy --exclude=b/1.txt --exclude=c/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
需求02: 将/oldboy目录下面 a目录数据全部备份 b目录不要备份1.txt文件 c整个目录1.txt 3.txt文件不要备份
- --exclude-from=file --- 批量排除
第一个历程: 编辑好一个排除文件
b/1.txt c/1.txt c/3.txt exclude.txt
第二个历程: 实现批量排除功能
rsync -avz /oldboy --exclude-from=/oldboy/exclude.txt rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
03 守护进程来创建备份目录
rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup/10.0.0.31/ --password-file=/etc/rsync.password
服务端查看
ls /backup/10.0.0.31/
使用建议
守护进程的访问控制配置
- 守护进程白名单和黑名单功能
- PS: 建议只使用一种名单
守护进程的列表功能配置
在配置文件中 /etc/rsyncd.conf 把 list 的设置为 true
重启 rsyncd 服务
systemctl restart rsyncd
客户端查看
rsync rsync_backup@172.16.1.41::