综合架构-备份服务器
备份服务器的作用
- 数据备份的服务器
- 进行日志统一保存
如何部署搭建备份服务器:rsync服务
什么是resync服务
resync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的工具
增量:就是在原有的基础上增加
resync软件使用方法
rsync命令 1v4(一个命令可以替代四个命令)
rsync [选项] 要传输的文件 将文件传到哪
参数:
-r:递归复制数据,即传输目录级
-p:保持文件属性不变
- 本地备份数据 cp
[root@192 ~]# cp /etc/hosts /tmp/
[root@192 ~]# ls /tmp/hosts
/tmp/hosts
使用cp命令将hosts文件备份到/tmp下
[root@192 ~]# rsync /etc/hosts /tmp/hosts_bak20211020
[root@192 ~]# ll /tmp/hosts_bak20211020
-rw-r--r--. 1 root root 158 Oct 21 03:29 /tmp/hosts_bak20211020
使用rsync也可以将数备份到本地/tmp下
- 远程备份数据
[root@192 ~]# scp /etc/hosts 172.16.1.193:/tmp/backup
hosts 100% 206 0.2KB/s 00:00
[root@193 backup]# ll /tmp/backup/hosts
-rw-r--r-- 1 root root 206 Oct 20 19:32 /tmp/backup/hosts
scp将本地的本地的hosts文件同步到172.16.1.193/tmp/backup下
[root@192 ~]# rsync /etc/hosts 172.16.40.19:/tmp/backup/hosts_bak20211020
[root@193 backup]# ll /tmp/backup/hosts_bak20211020
使用rsync也可以将数备份到172.16.1.193/tmp/backup下
- 替代删除文件
[root@192 tmp]# rsync -r --delete /tmp/null/ 172.16.40.19:/tmp/backup/
[root@193 backup]# ll /tmp/backup/
–delete:实现无差异同步数据使远程的/tmp/backup/和/tmp/null一样,null是空文件从而实现删除
- 查看文件
[root@192 ~]# rsync /tmp/hosts_bak20211020
-rw-r--r-- 158 2021/10/21 03:29:04 hosts_bak20211020
类似于ls -l命令
rsync服务部署安装过程
Linux系统安装部署服务流程:
- 下载安装软件 yum
- 编写配置文件
- 搭建服务环境 备份目录/目录权限
- 启动服务程序 开机自动启动
- 测试服务功能
rsync守护进程服务端部署方式
- 下载安装软件
[root@test01 ~]# rpm -qa|grep rsync #确认是否安装rsync软件
[root@test01 ~]# yum install rsync -y #安装rsync
- 编写配置文件
vim /etc/rsyncd.conf
uid = rsync #指定管理备份目录的用户
gid = rsync #指定管理备份目录的用户组
port = 873 #指定rsync备份服务的端口号
fake super = yes #将uid指定的虚拟用户伪装成为一个超级管理员
use chroot = no #和安全相关配置
max connections = 200 #最大连接数 同时只能有200个客户端连接到备份服务器
timeout = 300 #超时时间(s) 如果没有文件传输超过300s,自动断开连接
pid file = /var/run/rsyncd.pid #记录进程的PID,当程序停止时这个文件也不存在了
lock file = /var/run/rsyncd.lock #锁文件
log file = /var/log/rsyncd.log #rsync服务日志文件
ignore errors #忽略传输中的简单错误
read only = false #指定备份目录是可读可写
list = false #开启列表功能,使客户端可以查看服务端的模块信息
hosts allow = 192.168.184.0/24 #允许传输备份数据的主机(白名单)
hosts deny = 0.0.0.0/32 #禁止传输备份数据的主机(黑名单)
auth users = rsync_backup #指定认证用户
secrets file = /etc/rsync.password #指定认证用户密码文件 用户名称:密码信息
[backup] #模块信息
comment = "backup dir"
path = /backup #模块中配置参数 指定备份目录
- 创建rsync服务的虚拟用户
[root@test01 ~]# useradd rsync -M -s /sbin/nologin
- 创建备份服务认证密码文件
[root@test01 ~]# echo "rsync_backup:123456" > /etc/rsync.password
[root@test01 ~]# cat /etc/rsync.password
rsync_backup:123456
[root@test01 ~]# ll /etc/rsync.password #密码文件权限过大其他用户也有读的权限
-rw-r--r--. 1 root root 20 Oct 22 04:27 /etc/rsync.password
[root@test01 ~]# chmod 600 /etc/rsync.password
[root@test01 ~]# ll /etc/rsync.password
-rw-------. 1 root root 20 Oct 22 04:27 /etc/rsync.password
- 创建备份目录
[root@test01 ~]# mkdir /backup
[root@test01 ~]# chown rsync.rsync /backup
- 启动备份服务
[root@test01 ~]# systemctl start rsyncd
[root@test01 ~]# systemctl enable rsyncd
Created symlink from /etc/systemd/system/multi-user.target.wants/rsyncd.service to /usr/lib/systemd/system/rsyncd.service.
[root@test01 ~]# systemctl status rsyncd
● rsyncd.service - fast remote file copy program daemon
Loaded: loaded (/usr/lib/systemd/system/rsyncd.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2021-10-22 04:35:20 CST; 1s ago
Main PID: 1729 (rsync)
CGroup: /system.slice/rsyncd.service
└─1729 /usr/bin/rsync --daemon --no-detach
Oct 22 04:35:20 test01 systemd[1]: Started fast remote file copy program daemon.
Oct 22 04:35:20 test01 systemd[1]: Starting fast remote file copy program daemon...
- 测试
[root@test02 ~]# rsync -avz /etc/hosts rsync_backup@192.168.184.128::backup
Password:
sending incremental file list
hosts
rsync: chgrp ".hosts.HZ8wBG" (in backup) failed: Operation not permitted (1)
sent 154 bytes received 124 bytes 111.20 bytes/sec
total size is 143 speedup is 0.51
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1179) [sender=3.1.2]
[root@test01 ~]# ll /backup/
total 4
-rw-------. 1 rsync rsync 143 Oct 22 05:10 hosts
注意要关闭selinux和防火墙
rsync的工作原理
- 客户端执行命令 rsync -avz /etc/hosts rsync_backup@192.168.184.128::backup
- 门口的锁问你的名字
- 你说出自己的用户名
- 问你的密码看看是否匹配
- 说出自己密码
- 进入服务端后又原本客户端来的用户变成rsync用户
- 在备份目录下写入数据
rsync: chgrp “.hosts.HZ8wBG” (in backup) failed: Operation not permitted (1)报错说明
在客户端的时候不是rsync用户,在写入客户端的时候因为是rsync操作,他想把文件属组和属主改成rsync但是他的权限不够大,所以改属组的时候会报错
解决方法:
- 在客户端上就将属主属组改成rsync
- 在/etc/rsyncd.conf中加入fake super = yes这个配置
rsync守护进程客户端部署方式
- 创建一个密码文件
[root@test02 test]# echo "123456" > /etc/rsync.password
[root@test02 test]# chmod 600 /etc/rsync.password
- 进行免交互传输数据测试
[root@test02 test]# rsync -avz /etc/hosts rsync_backup@192.168.184.128::backup --password-file=/etc/rsync.password
sending incremental file list
hosts
sent 154 bytes received 43 bytes 131.33 bytes/sec
total size is 143 speedup is 0.73
rsync命令参数详细说明
命令参数 | 详细说明 |
---|---|
-v | 显示详细的传输信息 |
-a | 命令的归档参数,包含:rtopgDl |
-r | 递归参数 |
-t | 保持文件属性信息时间信息不变(修改时间) |
-o | 保持文件的属主信息不变 |
-g | 保持文件的属组信息不变 |
-p | 保持文件权限信息不变 |
-D | 保持设备文件信息不变 |
-l | 保持链接文件属性不变 |
-L | 保持链接文件数据信息不变 |
-P | 显示数据传输进度信息 |
- -exclude=PATTERN | 排除指定数据不被传输 |
- -exclude-from=file | 排除指定数据不被传输(批量排除) |
- -bwlimit=RATE | 显示传输速率 |
- -delete | 无差异同步参数,必须和我一样 |
守护进程服务企业应用
守护进程多模块功能配置
在配置文件rsyncd.conf中增加模块的配置
[dev]
path = /dev_data
comment = dev dir
[ops]
path = /ops_data
comment = dev dir
创建相应的目录,并把属主属组设置成配置文件中的uid、gid
守护进程的排除功能
需要用到下面两个参数
- -exclude=PATTERN|排除指定数据不被传输
- -exclude-from=file|排除指定数据不被传输(批量排除)
案例:
- 在data目录下a目录整个备份,b目录1.txt不备份,c目录整个不备份
[root@test02 test]# rsync -avz /data --exclude=b/1.txt --exclude=c/ rsync_backup@192.168.184.128::backup --password-file=/etc/rsync.password
相对路径时相对于/data目录,绝对路径也可以实现
- 在data目录下a目录整个备份,b目录1.txt不备份,c目录下的1.txt和3.txt不备份
1、编辑好一个排除文件
[root@test02 test]# cat exclude.txt
b/1.txt
c/1.txt
c/3.txt
2、编辑命令
[root@test02 test]# rsync -avz /data --exclude-from=exclude.txt rsync_backup@192.168.184.128::backup --password-file=/etc/rsync.password
守护进程创建备份目录
当多台服务器备份同一个文件名,备份在同一个目录下,当一个目录下有一个文件那就无法备份了,希望在备份目录下创建一个子目录,区别多台服务器的备份
方法:
[root@test02 test]# rsync -avz /etc/hosts rsync_backup@192.168.184.128::backup/192.168.184.128/ --password-file=/etc/rsync.password
在命令中的模块后面加上目录名,他就会在备份服务器上自动创建目录并备份。
ps:但是rsync没有创建多级目录的能力,没有mkdir -p那样的功能
守护进程的访问控制
守护进程的白名单和黑名单功能
- 当配置文件中只有白名单的时候:
首先看配置文件中白名单的配置的网段,如果白名单有的地址允许通过,如果没有的地址则一律不准通过 - 当配置文件中只有黑名单的时候:
首先看配置中黑名单的配置的网段,如果黑名单中有的地址则不准通过,如果没有的地址则一律允许通过 - 当黑名单和白名单同时存在的时候:
先看白名单的匹配机制,再看黑名单的匹配机制,如果在黑白名单都没有的IP,则默认允许通过
白名单优先于黑名单