Linux备份服务及rsync企业备份架构(应用场景)

备份服务概述

备份服务:需要使用到脚本,打包备份,定时任务.

备份服务:rsyncd服务,不同主机之间数据传输.

  • 特点:
  1. rsync是个服务也是命令
  2. 使用方便,具有多种模式
  3. 传输数据的时候是增量传输

增量与全量:
全量 :无论多少数据全部推送走(scp)
增量:只会把修改新建了的文件传输走(rsync)

把/etc/目录传输到另外一台机器的/tmp/下面
scp -r /etc/sysconfig/ root@192。168.28.131:/tmp/
rsync -avz /etc/sysconfig/ root@192.168.28.131:/mnt/

rsync企业应用场景:
应用场景(业务场景) 应用建议

rsync作为命令使用 临时拉取,推送数据.未来这个需求可以通过scp命令实现.

定时备份:rsync服务+定时任务 定时备份,定期备份案例.(定时任务进行备份+通过rsync传输备份)

实时同步:rsync服务+sersync/lsyncd实现实时同步 解决存储服务单点问题

rsync服务与异地容灾找一个异地的服务器存放备份

注意:单点问题:同一个功能/同一个服务,只有1台节点.

rsync不同的模式

1.1rsync本地模式

rsync -a /etc/ /tmp/
rsync -a /etc /opt/

在rsync对于目录 /etc/ /etc是有区别的
/etc /etc目录+目录的内容
/etc/ /etc/目录下面的内容

1.2远程模式

格式

rsync -a 源文件 目标

推送:rsync /etc/hostname root@192.168.28.131:/tmp

拉取:rsync root@192.168.28.131:/etc/hosts /opt/

#推送/etc/hostname到192.168.28.131的/tmp/目录
rsync -a /etc/hostname root@192.168.28.131:/tmp

#推送/etc目录及目录内容到131的/tmp下面
##推送第1次 全量
rsync -av /etc root@192.168.28.131:/tmp
##推送第2次 发现没有推送
rsync -av /etc root@192.168.28.131:/tmp
##创建文件再次推送
touch /etc/wulin.txt
rsync -av /etc root@192.168.28.131:/tmp
#通过scp推送 /etc目录及目录内容到131的 /opt下面
scp -r /etc/ root@192.168.28.131:/opt/
-r递归传输

1.3守护进程模式

服务使用流程

部署

配置

启动,使用

优化

故障

自动化

(监控,日志,安全,自动部署,容器)

1.3.1检查是否安装

检查安装 更新
yum install -y rsync
检查软件包内容
/etc/rsyncd.conf #配置文件
/usr/bin/rsync #命令
/usr/lib/systemd/system/rsyncd.service #systemctl对应的配置文件

1.3.2进行配置

[root@backup /wulin]# cat/etc/rsyncd.conf
#created by wulin 2024-5-12
##rsyncd.conf start##
fake super =yes
uid = rsync
gid = rsync
use chroot = no
max connections = 2000
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors

read only = false
list = false
#hosts allow = 10.0.0.0/24
#hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
#####################################
[data]
comment = www by wulin 2024-5-12
path = data

#启动服务
systemctl enable rsyncd
systemctl start rsyncd

#检查进程
ps -ef |grep rsync

#检查端口
ss -lntup |grep rsync

1.3.2后续配置

 #1.添加虚拟用户
useradd  -s /sbin/nologin -M   rsync#2.创建密码文件
密码文件格式:用户名:密码
echo 'rsync_backup:123 ' >/etc/rsync.password
chmod 600 /etc/rsync.password#3.共享目录与权限
mkdir /data/#启动服务
systemctl start rsyncd
systemctl enable rsyncd

#访问测试:

rsync -avz /etc/hosts rsync_backup@192.168.28.41::data

rsync_backup是服务端配置文件中的认证用户

data表示模块名字

本地测试:
[root@backup ~]# rsync -av /etc/hostname  
rsync_backup@192.168.28.41::data
Password:
sending incremental file list
hostname
sent 102 bytes
received 43 bytes  41.43 bytes/sec
total size is 7
speedup is 0.05[root@backup ~]# ll /data/
total 4
-rw-r--r-- 1 rsync rsync  17:02 hostname

#客户端测试:
##基本测试
[root@nfs01 ~]# rsync -avz /etc/hosts
rsync_backup@172.16.1.41::data
Password:
sending incremental file list
hosts

sent 214 bytes
received 43 bytes 73.43 bytes/sec
total size is 329 speedup is 1.28

##免密码传输数据到服务器
[root@nfs01 ~]#echo ‘123’ >/etc/rsync.passwords
[root@nfs01 ~]#chmod 600 /etc/rsync.passwords
[root@nfs01 ~]#
[root@nfs01 ~]#rsync -avz /etc/hosts rsync_backup@172.16.1.41::data --password-file=/etc/rsync.passwords
sending incremental file list

sent 47 bytes received 20 bytes 134.00 bytes/sec
total size is 333 speedup is 4.97

传到客户端
[root@nfs01 ~]#rsync -avz /tmp/etc.tar.gz rsync_backup@172.16.1.41::data --password-file=/etc/rsync.passwords
sending incremental file list
etc.tar.gz在这里插入图片描述

1.4守护进程补充

uid,gid与auth user

1.用户执行命令:rsync -avz /tmp/etc.tar.gz rsync_backup@backup::data --passwordfile=/etc/rsync.password

2.服务端收到数据:判断rsync_backup用户,然后等待输入密码

3.把用户名和密码与配置文件里面对比auth user和secretsfile

4.通过后,传输数据

5.数据到达服务器所有者被修改为uid和gid指定的(rsync)

6.数据写入data模块(/data/)目录下面.

免密的方式连接服务端(命令行指定客户端密码文件)

客户端密码文件只存储密码即可
echo 123 >/etc/client.rsync
chmod 600 /etc/client.rsync
rsync -avz /etc/hosts
rsync_backup@172.16.1.41::data --password-
file=/etc/client.rsync

访问控制-安全措施

hosts allow只准许指定的ip或网段访问

hosts deny拒绝.
配置只准许172.16.1.0/24网段访问

2.1rsync选项

-a

  1. -rlptgoD
  2. -r递归复制
  3. -l复制软连接
  4. -p保持权限不变
  5. -m保持修改时间不变
  6. -o所有者不变
  7. -g用户组不变
  8. -D --devices --specials设备与特殊文件

-v 显示过程

-z 传输数据时候进行压缩(公网)

-p 显示每rsync -av . root@192.168.28.131:/tmp/ --exclude=04rsync -av . root@192.168.28.131:/mnt --exclude={04,05}个文件传输过程(进度条)断点续传–partial --progress

–bwlimit 限速注意不要与-z一起使用

–exclude、–exclude-from排除

–delete目标目录与源目录保持一致的传输

限速并传输
rsync  -aP --bwlimit=500kb   /tmp/1g  
192.168.28.131:/mnt/传输并排除
rsync -av .  root@1192.168.28.1311:/tmp/   --exclude=04
rsync -av .  
root@192.168.28.131:/mnt   --exclude=
{04,05}通过文件内容进行排除
[root@backup /wulin]# cat /tmp/paichu.txt
03
05
10[root@backup /wulin]# rsync -av .  
root@192.168.28.131:~   --exclude-from=/tmp/paichu.txt保持源与目标数据一致
rsync  -avP --delete   .  root@192.168.28.131:/tmp/

故障总结

password mismatch

backup rsyncd[3177]: authfailed on module data from UNKNOWN(10.0.0.41) for rsync_backup: no secretsfile

no secrets file

selinux和防火墙
在这里插入图片描述

项目案例

可能来自于老大的一句话:网站数据需要备份,你操作一下

接下来的内容需要你自己规划,备份什么内容?如何备份?如何收集备份(统一存放备份)?保留时间?都是什么系统?什么系统的版本?

  • 备份什么?

    1. 数据(用户数据库)数据库 存储

    2. 配置文件

    3. 脚本和代码

    4. 网站代码

日志收集

  • 如何备份?

  • 如何收集?

    rsync服务收集备份(rsync客户端推送备份到rsync服务器)

在这里插入图片描述

2.2项目流程:

1)环境准备

1)环境准备
角色 主机 运行服务
存放备份 backuprsync服务端
生成备份 nfs01rsync客户端,其他服务
生产备份 web01rsync客户端,其他服务
  1. 项目步骤
    这里为操作步骤,未来的工作还会有沟通(与其他部门进行商讨)定期汇报
    | 步骤说明 详细内容 | |
    | ------------------------------------------------------------ | ---- |
    | rsync服务端并调试 服务端配置 、back目录 | |
    | rsync客户端节点配置脚本(备份) 备份 推送 清理 | |
    | 其他节点匹配定时任务 定时运行脚本 | |
    | 在备份服务器上检查并发送邮件 在rsync服务端检查备份并发送邮件 | |

  2. 配置与检查rsync服务端与客户端
    vim/etc/rsyncd.conf
    在这里插入图片描述

[root@backup ~]#mkdir -p /backup/ #创键目录chown -R rsync.rsync /backup/ll -d /backup/检查

在这里插入图片描述
改完了配置文件进行重启

systemctl restart rsyncd(端口号为873)

ch在客户端测试

rsync -av /etc/hostname rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.passwords
sending incremental file list
hostname

在备份服务器看是否传输过来

ll /backup/

cat /backup/hostname

4)书写备份脚本
书写脚根据企业,任务需求合理高效进行书写脚本,写脚本在多窗口化进行编写边测试(整理这个的需要命令,写成脚本(引用变量名实现脚本万能功能–在相同类型机器上省时间省力气–当然注意整体磁盘空间内存信息,在架构搭建初期各部门进行会议交流))

在nf01这个客户端上vim /server/scripts/bak_conf.sh(写脚本编写脚本边进行测试)[root@nfs01 ~]#hostname -I[root@nfs01 ~]#hostname -I |awk '{print $2}'

在这里插入图片描述
在存储服务器上对推送脚本进行测试

mkdir -p /backup/172.16.1.131

tar zcf /backup/172.16.1.131/etc.tar.gz /etc /var/spool/cron/

ll /backup/172.16.1.131/

tree /backup/(企业数量文件内容特别多的时候,可以采用树状结构)

rsync -a /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.passwords

检查服务端是否推送过来

tree /backup/
在这里插入图片描述
测试成功,将脚本写入脚本

继续在客户端测试删除旧的客户端备份命令
在这里插入图片描述
[root@nfs01 ~]#find /backup/ -type f -name “*.tar.gz”

[root@nfs01 ~]#find /backup/ -type f -name “*.tar.gz” -mtime +7 |xargs rm -f

(这里xargs后不支持别名 ,rm删文件会接提示)
在这里插入图片描述
测试成功写入脚本!

整个备份服务器脚本配置文件:
在这里插入图片描述
脚本运行完进行测试

rm -fr /backup/

把服务端的ip可以进行删掉,这里如果删除了backup目录,备份服务器会报错
在这里插入图片描述
删掉客户端目录并tree
在这里插入图片描述
运行脚本并检查服务端是存在backup
在这里插入图片描述
在这里插入图片描述
未来我们只需要调整脚本备份内容(目录)ip即可

写定时任务:
在这里插入图片描述
在这里插入图片描述
crontab -e

在这里插入图片描述
在这里插入图片描述
查看日志tail -f /var/log/cron

date

查看结果(每2秒进行执行)

在这里插入图片描述
查看服务端:
在这里插入图片描述
(说明测试没有问题,可以在定时任务按照企业时间需求及追加目录进行配置

5)服务端备份脚本调试
检查备份并清除旧的备份脚本

vim /server/scripts/check.sh

find /backup/ -type f -name "*.tar.gz" |xargs ls -lhd
find /backup/ -type f -name "*.tar.gz" |awk '{print $NF,$5}'
find /backup/ -type f -name "*.tar.gz" |awk 
-F  '[ /]+' '{print $(NF-1),NF,$5}'

在这里插入图片描述
让内容多一点将nfs01客户端脚本文件传入到web01服务器上

[root@nfs01~]#scp/server/scripts/bak_conf.sh 192.168.28.7:/server/scripts/
在这里插入图片描述
[root@nfs01 ~]#scp /etc/rsync.password 192.168.28.7:/etc

[root@nfs01 ~]#scp /var/spool/cron/root 192.168.28.7:/var/spoo
l/cron/

检查传输到web01服务器内容

[root@web01 ~]#ll /etc/rsync.password

[root@web01~]#ll/etc/rsync.password /server/scripts/bak_conf.sh

[root@web01 ~]#ll /etc/rsync.password /var/spool/cron/root

[root@web01~]#head-30/etc/rsync.password /server/scripts/bak_conf.sh /var/spool/cron/root
在这里插入图片描述
在这里插入图片描述
在web01服务器运行bak_conf.sh脚本
在这里插入图片描述
在备份服务器进行检查如果成功会有172.16.1.7这一行

[root@backup ~]#find /backup/ -type f -name “*.tar.gz” |awk -F ‘[ /]+’ ‘{print $(NF-1),NF,$5}’

在这里插入图片描述
在这里插入图片描述
测试统计结果命令并写入脚本:

[root@backup ~]#awk -F: ‘BEGIN{print “用户名”,“UID”}{print 1 , 1, 1,​3}’ /etc/passwd

在这里插入图片描述
完成脚本(清除旧的脚本统计结果并将结果发送到邮件)
在这里插入图片描述
[root@backup /backup]#sh /server/scripts/check.sh

如果在邮箱中没有见到信息,在垃圾邮箱查找(被邮箱系统屏蔽掉了)
在这里插入图片描述
在这里插入图片描述
配置定时任务:

crontab -e
在这里插入图片描述
然后观察日志文件及邮箱信息

[root@backup /backup]#tail -f /var/log/cron

最后将结果追加到result.txt
在这里插入图片描述

6)增加校验功能

简单理解校验测试(知识理解):

  • 检查传输中是否有变化及检查的那个文件md5:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    检查多个检验文件(find+md5)
#给/etc/下面所有的文件创建MD5保存到指定文件中
find /etc/ -type f | md5sum   >etc-all.md5
#进行校验
md5sum -c etc-all.md5
#修改/etc/下某个文件比如增加个"#"
vim /etc/rsyncd.conf
#进行校验
md5sum -c etc-all.md5
#只显示md5
异常的文件
md5sum --quiet  -c etc-all.md5

在这里插入图片描述
具体应用:

  • 客户端备份的时候生成备份,创建指纹信息

安全防护措施:

给命令和较为固定的配置设置md5,定期校验

作图为清理旧的备份服务端脚本

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

rsync2022年漏洞

影响的版本:3.2.5版本验证不足情况

检查rsync版本:
在这里插入图片描述
检查yum源是否有新的rsync版本,在装yum最新版本之前,我们自己的rsync比它最新的版本很低:
在这里插入图片描述
去官网找rsync包:下载 Samba

下载 Sambarsync (samba.org)

https://rsync.samba.org/

在这里插入图片描述
二进制别人已经弄好了,我们只需要进行解压使用,但是不一定能打开
添加链接描述
https://download.samba.org/pub/rsync/binaries/
在这里插入图片描述
这里的版本还不能进行满足,下载这里最
新的rsync包,看是否还能进行满足:
##下载最新的rsync包
wget https://download.samba.org/pub/rsync/binaries/centos-7.9-x86_64/latest.tar.gz
[root@backup ~]#tar tf latest.tar.gz

[root@backup ~]#tree -F usr/
usr/
└── local/
├── bin/
│ ├── rsync*
│ └── rsync-ssl*
└── share/
├── doc/
│ ├── COPYING
│ ├── NEWS.md
│ └── README.md
└── man/
├── man1/
│ ├── rsync.1
│ ├── rsyncd.conf.5
│ └── rsync-ssl.1
└── man5/

在这里插入图片描述
会发现还是满足不了

  • yum源不行
  • 软件包不行
  • 官网二进制也不行
  • 我们使用最本制的方式:编译安装(这里有3.2.7的版本)

通过yum update rsync升级,查到的版本还是低,但是升级说不定修复了补丁(说不来)厂商已经发布升级补丁修复漏洞方式(不方便升级版本的时候使用补丁)

还是要进行改源代码–》回到本质还是编译

还可以通过漏洞扫描工具,针对具体漏洞具体处理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/330079.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

研发机构大数据迁移如何保障敏感数据不泄露

随着云计算和大数据技术的飞速进步,越来越多的企业正试图通过数据迁移来提升IT基础设施的效率,减少成本,并增强业务的灵活性。但是,这一过程并非没有它的挑战,尤其是在数据安全方面。数据在转移过程中可能会遭遇黑客攻…

光伏企业都在用的户用光伏管理软件——鹧鸪云

随着全球对可再生能源和清洁能源的需求日益增长,光伏产业作为其中的佼佼者,正迎来前所未有的发展机遇。然而,随着光伏电站规模的扩大和分布范围的增加,如何高效、智能地管理这些电站,确保它们稳定、安全地运行&#xf…

k8s遇到的错误记录

时隔四年有开始重新鼓捣k8s了,重新安装后遇到的错误记录如下: Error: Package: kubelet-1.14.0-0.x86_64 (kubernetes) Requires: kubernetes-cni 0.7.5 Available: kubernetes-cni-0.3.0.1-0.07a8a2.x86_64 (kubernetes) …

数美滑块研究

周一,在清晨的阳光照耀下,逆向山脚下的小镇宁静而安详。居民们忙碌地开始一天的生活,而在爬虫镇子的边缘,一座古朴的道观显得格外神秘。 阿羊正静静地坐在青石长凳上,摸鱼养神。突然,一道清脆的声音在他耳…

element-plus:踩坑日记

el-table Q:有fixed属性时,无数据时,可能出现底部边框消失的bug 现象: 解决方法: .el-table__empty-block {border-bottom: 1px solid var(--el-table-border-color); } el-collapse 折叠面板 Q:标题上…

为什么说 Redis 是单线程的?——Java全栈知识(25)

为什么说 Redis 是单线程的? 我们常说的 Redis 是单线程的,但是我前面在讲持久化机制的时候又说 RDB 的持久化是通过主进程 fork 出一个子进程来实现 RDB 持久化。那么 Redis 到底是多线程还是单线程的呢? Redis 的网络 IO 和键值的读写是单…

leetcode 1225 报告系统状态的连续日期(postgresql)

需求 系统 每天 运行一个任务。每个任务都独立于先前的任务。任务的状态可以是失败或是成功。 编写一个 SQL 查询 2019-01-01 到 2019-12-31 期间任务连续同状态 period_state 的起止日期(start_date 和 end_date)。即如果任务失败了,就是失…

Linux网络之策略路由

一、前言 日常维护工作中,有时候会遇到单台主机多张网卡的情况,尤其云上环境,云主机多张网卡是一种常见网络配置场景,那如何让多网卡正常工作呢,本期基于此北京,回顾下Linux策略路由的相关知识; 策略路由PBR:(Policy-Based-Route),也称为源路由,它是一种比基于目标网…

Python 造数据神器Faker

大家好,在编写代码过程中,我们经常需要一些假数据来进行测试或者演示。手动创建这些数据不仅耗时,而且容易出错。幸运的是,Python有一个非常有用的库叫做Faker,它可以生成各种类型的假数据,从名字、地址到公…

教你用U-Mail搭建一个企业邮箱系统

随着互联网的发展,电子邮件已成为企业内部沟通和外部商务的重要工具。对于企业而言,拥有一个安全、稳定、高效的企业邮箱系统至关重要。U-Mail作为一款备受好评的企业邮箱系统,本文将详细介绍如何使用U-Mail从零开始搭建一个企业邮箱系统。 一…

ganglia的安装使用

1.集群内分别安装epel-release依赖,更新yum源 sudo yum -y install epel-release 2.各节点上分别安装gmond sudo yum -y install ganglia-gmond 3.监控节点上安装gmetad和web(这里安装在node1上) sudo yum -y install ganglia-gmetad sudo yum -y insta…

Vue基础(1)数据绑定

一. 文本插值 普通文本可以使用双大括号 {{ }} &#xff0c;要想插入 HTML&#xff0c;需要使用 v-html 指令。 <template><h1>Message: {{ state.msg }}</h1><p>{{ state.count 1 }}</p><p>{{ state.rawHtml }}</p><p v-html…

消息队列实战应用

适用场景 耗时长&#xff0c;非核心业务&#xff0c;生产者不会用到消息处理结果的情况下&#xff0c;可以将消息交给异步服务去缓存与消费 部署MQ服务 version: "3.0" services:rabbitmq:container_name: rabbitmq-15672-1image: rabbitmq:3-managementports:- &…

关于新配置的adb,设备管理器找不到此设备问题

上面页面中一开始没有找到此android设备&#xff0c; 可能是因为我重新配置的adb和设备驱动&#xff0c; 只把adb配置了环境变量&#xff0c;驱动没有更新到电脑中&#xff0c; 点击添加驱动&#xff0c; 选择路径&#xff0c;我安装时都放在了SDK下面&#xff0c;可以尝试…

Python操作MySQL

文章导读 阅读本文需要一定的Python基础和MySQL基础&#xff0c;如果阅读过程中感到吃力&#xff0c;可以阅读我的Python入门篇学习记录和MySQL学习记录填补知识漏洞&#xff0c;本文使用VS Code操作pymysql驱动&#xff0c;使用navicat查看数据库&#xff0c;实操偏多&#xf…

Parasoft C++Test软件静态分析操作指南_软件质量度量

系列文章目录 Parasoft CTest软件安装指南 Parasoft CTest软件静态分析操作指南_编码规范/标准检查 Parasoft CTest软件静态分析操作指南_软件质量度量 Parasoft CTest软件静态分析_自动提取静态分析数据生成文档 Parasoft CTest软件单元测试_操作指南 Parasoft CTest软件单元…

8个实用网站和软件,收藏起来一定不后悔~

整理了8个日常生活中经常能用得到的网站和软件&#xff0c;收藏起来一定不会后悔~ 1.ZLibrary zh.zlibrary-be.se/这个网站收录了超千万的书籍和文章资源&#xff0c;国内外的各种电子书资源都可以在这里搜索&#xff0c;98%以上都可以在网站内找到&#xff0c;并且支持免费下…

错误0xc0000022的3种解决方法

程序无法正常启动&#xff0c;报错代码为0xc0000022。当你的电脑运行程序出现这种情形&#xff0c;多半是由于系统的权限问题引起的。 原因一&#xff1a;应用程序的访问权限不足 有时候&#xff0c;直接打开文件时会遇到“0xc0000022” 错误&#xff0c;但是右键“以管理员身份…

力扣刷题---409. 最长回文串【简单】

题目描述 给定一个包含大写字母和小写字母的字符串 s &#xff0c;返回 通过这些字母构造成的 最长的回文串 。 在构造过程中&#xff0c;请注意 区分大小写 。比如 “Aa” 不能当做一个回文字符串。 示例 1: 输入:s “abccccdd” 输出:7 解释: 我们可以构造的最长的回文串…