首页 > 其他分享 >备份任务实战

备份任务实战

时间:2024-10-04 17:02:11浏览次数:7  
标签:实战 rsync log tgz 备份 etc 任务 backup

今天的任务主要以实际备份任务入手,完成综合练习,完成对rsync的综合运用。

先看需求
再讲解
再次动手实践
客户端需求
客户端需求:
1.客户端每天凌晨1点在服务器本地打包备份(/etc目录和/var/log目录)
2.客户端备份的数据必须存放至以 "主机名_ip地址_当前时间" 命名的目录中
3.客户端最后通过rsync推送本地已经打包好的备份文件至backup服务器
4.客户端服务器本地保留最近7天的数据,避免浪费磁盘空间
服务端需求
服务端需求:
1.服务端部署rsync,用于接收客户端推送过来的备份数据
2.服务端需要每天校验客户端推送过来的数据是否完整
3.服务端需要每天校验的结果通知给管理员
4.服务端仅保留6个月的备份数据,其余的全部删除
注意:所有服务器的备份目录必须都为/backup
客户端需求拆解
先把大需求,拆分为每一个小需求,思考出解决办法,然后再综合操作,也可以写成脚本。

1.打包备份
客户端每天凌晨1点在服务器本地打包备份(/etc目录和/var/log目录)

  • 注意tar命令打包,尽量以相对路径去打包
  • /etc目录是为了备份系统配置文件、应用配置文件
  • /var/log是为了备份所有应用程序的日志

/etc备份

[root@nfs-31 ~]#mkdir /backup
[root@nfs-31 ~]#cd / && tar -zcf /backup/etc.tgz etc
[root@nfs-31 ~]#ll /backup/etc.tgz -h
-rw-r--r-- 1 root root 9.4M Apr 19 16:48 /backup/etc.tgz

/var/log备份
[root@nfs-31 ~]#cd / && tar -zcf /backup/log.tgz var/log
[root@nfs-31 ~]#
[root@nfs-31 ~]#ll -h /backup/log.tgz
-rw-r--r-- 1 root root 492K Apr 19 16:50 /backup/log.tgz
2.文件夹命名要求
2.客户端备份的数据必须存放至以"主机名_ip地址_当前时间"命名的目录中

期望的结果是,如nfs-31_10.0.0.31_2022-04-19

1.提取主机名
[root@nfs-31 ~]#hostname
nfs-31

2.提取ip地址
[root@nfs-31 ~]#ifconfig eth0 |awk 'NR==2{print $2}'
10.0.0.31

3.时间设置
[root@nfs-31 ~]#date +%F
2022-04-19

4.拼接在一起,文件夹命名的命令如下
[root@nfs-31 ~]#echo "$(hostname)$(ifconfig eth0 |awk 'NR==2{print $2}')$(date +%F)"
nfs-31_10.0.0.31_2022-04-19

5.创建文件夹,你也可以用内网ip操作
要求,在备份目录下,创建以格式要求的文件夹
mkdir -p /backup/$(hostname)$(ifconfig eth1 |awk 'NR==2{print $2}')$(date +%F)

6.检查最终的rsync备份目录
[root@nfs-31 /]#tree /backup/
/backup/
└── nfs-31_172.16.1.31_2022-04-19
├── etc.tgz
└── log.tgz

1 directory, 2 files
3.文件传输
3.客户端最后通过rsync推送本地已经打包好的备份文件至backup服务器

注意rsync服务的搭建,以及认证方式到底是什么,是密码文件,还是变量
export RSYNC_PASSWORD=yuchao666

[root@nfs-31 /]#rsync -avzP /backup/ [email protected]::backup
sending incremental file list
./
nfs-31_172.16.1.31_2022-04-19/
nfs-31_172.16.1.31_2022-04-19/etc.tgz
9,809,921 100% 37.45MB/s 0:00:00 (xfr#1, to-chk=1/4)
nfs-31_172.16.1.31_2022-04-19/log.tgz
507,599 100% 1.85MB/s 0:00:00 (xfr#2, to-chk=0/4)

sent 10,105,838 bytes received 73 bytes 20,211,822.00 bytes/sec
total size is 10,317,520 speedup is 1.02
4.删除过期文件
4.客户端服务器本地保留最近7天的数据,避免浪费磁盘空间

find /backup/ -mtime +7 -delete
5.整合脚本
把上述拆解的过程,写成一个脚本、批量执行。

当然这个脚本还可以有多的优化。

!/bin/bash

1.创建目录,注意目录名字规则

mkdir -p /backup/$(hostname)$(ifconfig eth1|awk 'NR==2{print $2}')$(date +%F)

2.打包备份数据

cd / && tar -zcf /backup/$(hostname)$(ifconfig eth1|awk 'NR==2{print $2}')$(date +%F)/etc.tgz etc
cd / && tar -zcf /backup/$(hostname)$(ifconfig eth1|awk 'NR==2{print $2}')$(date +%F)/log.tgz var/log

3.传输客户端备份数据到,rsync备份服务器上,别忘记是如何验证密码的

export RSYNC_PASSWORD=yuchao666
rsync -az /backup/$(hostname)$(ifconfig eth1|awk 'NR==2{print $2}')$(date +%F) [email protected]::backup

4.删除过期文件

find /backup/ -mtime +7 -delete
6.调试脚本
只显示执行过程,而不会真的执行,发生修改,用于调试程序 -x参数

[root@nfs-31 /]#bash -x rsync_test.sh
服务端需求拆解
1.脚本化部署rsyncd服务端
1.服务端部署rsync,用于接收客户端推送过来的备份数据

配置rsyncd服务端的的全流程,也可以写成脚本,一键安装了

!/bin/bash

yum install rsync -y

cat > /etc/rsyncd.conf << 'EOF'
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
[backup]
comment = chaoge rsync backup!
path = /backup
EOF

useradd -u 1000 -M -s /sbin/nologin www
mkdir -p /{backup,data}
chown -R www:www /{backup,data}
echo "rsync_backup:yuchao666" > /etc/rsync.passwd
chmod 600 /etc/rsync.passwd
systemctl start rsyncd
2.校验数据完整性
2.服务端需要每天校验客户端推送过来的数据是否完整

通过md5sum命令即可生成文件的唯一校验值,等于添加了一个防伪标记。

此时需要修改客户端的脚本了,多一个对文件校验的过程

!/bin/bash

1.创建目录,注意目录名字规则

mkdir -p /backup/$(hostname)$(ifconfig eth1|awk 'NR==2{print $2}')$(date +%F)

2.打包备份数据

cd / && tar -zcf /backup/$(hostname)$(ifconfig eth1|awk 'NR==2{print $2}')$(date +%F)/etc.tgz etc
cd / && tar -zcf /backup/$(hostname)$(ifconfig eth1|awk 'NR==2{print $2}')$(date +%F)/log.tgz var/log

2.1 添加文件校验

md5sum /backup/$(hostname)$(ifconfig eth1|awk 'NR==2{print $2}')$(date +%F)/*.tgz > /backup/md5_tgz.txt

3.传输客户端备份数据到,rsync备份服务器上,别忘记是如何验证密码的

这里注意,要把该目录所有的文件数据发过去了

export RSYNC_PASSWORD=yuchao666
rsync -az /backup/ [email protected]::backup

4.删除过期文件

find /backup/ -mtime +7 -delete
此时在rsync服务端,可以通过命令校验文件完整性

[root@rsync-41 ~]#md5sum -c /backup/md5_tgz.txt
/backup/nfs-31_172.16.1.31_2022-04-19/etc.tgz: OK
/backup/nfs-31_172.16.1.31_2022-04-19/log.tgz: OK
3.邮件通知
3.服务端需要每天校验的结果通知给管理员

这里你就照抄就好,固定步骤而已,更换为你自己的qq邮箱即可

然后需要打开qq邮箱的smtp服务器的授权码,自己去获取

注意授权码别泄露给别人

1.安装配置mailx:

yum install mailx -y

2.邮箱配置文件

cat > /etc/mail.rc << 'EOF'
set [email protected]
set smtp=smtps://smtp.qq.com:465
set [email protected]
set smtp-auth-password=beedsjswqcdfbaje
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
EOF

3.服务端生成校验结果文件:

md5sum -c /backup/md5_tgz.txt > /backup/check_md5_result.txt

4.校验发送命令,把校验结果,发给于超老师的qq邮箱

语法 mail -s "邮件主题" 邮箱 < 邮件正文

mail -s "check-rsync-$(date +%F)" [email protected] < /backup/check_md5_result.txt
image-20220419174846743

4.过期文件删除
4.服务端仅保留6个月的备份数据,其余的全部删除

find /backup -mtime +180 -delete
5.汇总脚本(服务端、客户端)
5.1 客户端脚本

!/bin/bash

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
export RSYNC_PASSWORD=yuchao666

1.创建客户端备份数据的目录

mkdir -p /backup/$(hostname)$(ifconfig eth1|awk 'NR==2{print $2}')$(date +%F)

2.打包备份etc配置文件,var/log 日志目录

cd / && tar -zcf /backup/$(hostname)$(ifconfig eth1|awk 'NR==2{print $2}')$(date +%F)/etc.tgz etc

cd / && tar -zcf /backup/$(hostname)$(ifconfig eth1|awk 'NR==2{print $2}')$(date +%F)/log.tgz var/log

3.生成校验文件,确保备份的数据完整性

md5sum /backup/$(hostname)$(ifconfig eth1|awk 'NR==2{print $2}')$(date +%F)/*.tgz > /backup/md5_result.txt

4.传输到备份服务器

export RSYNC_PASSWORD=yuchao666
rsync -az /backup/ [email protected]::backup

5.删除过期文件

find /backup -mtime +7 |xargs rm -rf
5.2 服务端脚本

!/bin/bash

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

1.校验数据完整性

md5sum -c /backup/md5_result.txt > /backup/check.txt

2.发送邮件

mail -s "check-rsync-$(date +%F)" [email protected] < /backup/check.txt

3.删除过期文件

find /backup -mtime +180 |xargs rm -rf
6.定时任务
服务端要求是每天校验

0 0 * * * /bin/bash /scripts/server_rsync.sh > /tmp/backup.log 2>&1
客户端是每天凌晨一点

00 01 * * * /bin/bash /scripts/client_rsync.sh > /tmp/backup.log 2>&1
测试脚本,服务端、客户端的脚本,改为每分钟试一下,也可以直接运行该脚本,查看结果。


注意测试顺序是

先客户端
再服务端
学习作业
1.理解任务需求

2.拆解任务需求、一步步思考,应该如何敲命令

3.整合所有操作,写成shell脚本

4.完成最终正确的备份、定时任务效果,确保正确性。

于超老师的笔记作为参考,自己可以尝试先自己写,最后不懂了再来看笔记

标签:实战,rsync,log,tgz,备份,etc,任务,backup
From: https://www.cnblogs.com/gllinux/p/18446835

相关文章

  • 全面图解Docker架构设计:掌握Docker全链路思维/实战/优化(小白到大师篇[2])
    Docker是一个革命性的开放平台,用于开发、交付和运行应用程序。通过使用Docker,开发者可以打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何支持Docker的环境中,在不同环境中实现一致的运行。无论是在虚拟机、物理服务器、数据中心还是云平台,Docker......
  • 影刀RPA实战:网页爬虫之电影数据
    1.实战目标电影自媒体是指个人或团队通过互联网平台,如微博、微信公众号、抖音、B站等,发布与电影相关的内容,包括但不限于电影评论、推荐、幕后制作揭秘、明星访谈等。这些内容旨在吸引电影爱好者,并与之互动,构建起一定的观众群体。那么做电影自媒体的伙伴们,不免经常需要在网站......
  • 国庆快乐!附ssh实战
     小伙伴们,有一段时间没更新了,目前在中科院软件所实习,在这里我祝大家国庆快乐! 今天这一期带来ssh命令的实战教程,ssh在工作当中遇到的非常多,因为总是需要登服务器,而且玩法也有不少,这是我常用的几个玩法。1、Windows直接连接虚拟机启动的Linux。sshuser@IPV42、从Linux反向......
  • Spring框架学习之ICO、AOP详解及实战案例
    Spring框架学习一、IOCIOC是SpringFramework核心,简单理解就是bean容器,也就是说代码中不需要new()来创建实例了,IOC启动的时候就帮你装载好了,你只需要@Autowired引入即可使用。SpringBean生命周期1.1SpringBean生命周期1.2SpringIOC扩展点二、AOPAOP(AspectOrie......
  • 【艾思科蓝】Python数据分析与可视化实战:从入门到进阶
    【IEEE出版|会后3-4个月EI检索】第三届云计算、大数据应用与软件工程国际学术会议(CBASE2024)_艾思科蓝_学术一站式服务平台更多学术会议请看:学术会议-学术交流征稿-学术会议在线-艾思科蓝 目录引言一、Python数据分析入门1.Python数据分析环境搭建2.数据读取与预......
  • 美容院管理智能化:SpringBoot系统开发实战
    第四章系统设计设计一个系统不单单是设计系统的页面,可以说系统设计其本质是一个结合了众多设计过程的比较复杂的系统工程。一般来说,在完成系统设计时,需要了解和掌握很多设计的知识,有界面布局技术的知识,页面采用的字体和颜色的运用,还有页面空白的规范使用等,如何将这些元素......
  • 香橙派: 拷贝系统到新sd卡(系统备份)
    本文转载自博主:https://www.cnblogs.com/YaoYing/p/12106583.html使用香橙派或者树莓派时,需要烧录系统到sd卡,我们可以重新烧录一张sd卡,也可以将已经配置好系统的sd卡内容拷贝到新卡中。具体步骤如下:把旧SD卡插入树莓派并启动,利用读卡器把新SD卡插入树莓派USB。查看新SD卡......
  • ComfyUI 实战:初探工作流
    最近体验了一下ComfyUI。作为刚入门的新手,把一些我在配置和运行复杂图像生成工作流中的实践经验记录下来。环境搭建:基础设施与依赖项在深入工作流程之前,需要先搭建正确的环境。这涉及安装一些ComfyUI基础版中未包含的额外节点:ComfyUI-Manager:用于管理和安装各种自定义节点......
  • springboot实战项目-寰宇外卖重难点总结
    思考前端和后端的请求地址不同,前端发送的请求,是如何请求到后端服务的?可以通过nginx反向代理将前端发送的动态请求由nginx转发到后端服务。nginx其他优点:1.提高访问速度。2.进行负载均衡。3.安全性高,保护后端服务安全。nginx负载均衡策略:1.轮询(默认):按时间顺序依次将请求分发......
  • 53_初识搜素引擎_上机动手实战如何定制搜索结果的排序规则
    1、默认排序规则默认情况下,是按照_score降序排序的然而,某些情况下,可能没有有用的_score,比如说filterGET/_search{"query":{"bool":{"filter":{"term":{"author_id":1}}}}}当然,也可以是constant_scoreGET/_search{"query"......