当前位置:首页 > 操作系统 > 正文内容

Linux备份使命归纳试验

邻居的猫1个月前 (12-09)操作系统470

使命布景

客户端需求

客户端需求:

1.客户端每一个小时整点在服务器本地打包备份(/etc目录和/var/log目录) 
2.客户端备份的数据有必要寄存至以 "主机名_ip地址_当时时刻" 命名的目录中 
3.客户端最终经过rsync推送本地现已打包好的备份文件至backup服务器 
4.客户端服务器本地保存最近2天的数据,防止糟蹋磁盘空间

服务端需求

服务端需求:
1.服务端布置rsync,用于接纳客户端推送过来的备份数据 
2.服务端需求每次校验客户端推送过来的数据是否完好 
3.服务端需求每次校验的成果告诉给管理员 
4.服务端仅保存7天的备份数据,其他的悉数删去 
留意:一切服务器的备份目录有必要都为/backup

主机列表

客户端:172.16.1.110  client-110
服务端:172.16.1.241  rsync-test-241

试验进程记载

思路:先把大需求,拆分为每一个小需求,思考出解决办法,然后再归纳操作,最终再写成脚本。

一、客户端

1.打包备份

客户端每一个小时整点在服务器本地打包备份(/etc目录和/var/log目录)

留意tar指令打包,尽量以相对路径去打包
/etc目录是为了备份系统装备文件、运用装备文件
/var/log是为了备份一切运用程序的日志

1.1.创立备份目录/backup

[root@client-110 ~]# mkdir /backup

1.2.打包/etc

[root@client-110 ~]# cd / && tar -czf /backup/etc.tgz etc
[root@client-110 /]# ll -h /backup/
总用量 10M
-rw-r--r-- 1 root root 10M 11月 20 14:48 etc.tgz

1.3.打包/var/log

[root@client-110 /]# cd / && tar -czf /backup/log.tgz var/log
[root@client-110 /]# ll -h /backup/log.tgz 
-rw-r--r-- 1 root root 391K 11月 20 14:57 /backup/log.tgz

2.文件夹命名要求

客户端备份的数据有必要寄存至以"主机名_ip地址_当时时刻"命名的目录中,希望的成果是,如client-110_172.16.1.110_2024-11-20_16

2.1.获取主机名

[root@client-110 /]# hostname
client-110

2.2.提取ip地址

检查网卡eth1地址

[root@client-110 /]# ifconfig eth1
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.1.110  netmask 255.255.255.0  broadcast 172.16.1.255
        inet6 fe80::5054:ff:fef4:86e2  prefixlen 64  scopeid 0x20<link>
        ether 52:54:00:f4:86:e2  txqueuelen 1000  (Ethernet)
        RX packets 735  bytes 46116 (45.0 KiB)
        RX errors 0  dropped 680  overruns 0  frame 0
        TX packets 34  bytes 2236 (2.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

经过awk指令提取ip地址

[root@client-110 /]# ifconfig eth1|awk 'NR==2{print $2}'
172.16.1.110

2.3.获取当时时刻

日期_小时

[root@client-110 /]# date +%F_%H
2024-11-20_15

2.4.拼接在一起,文件夹命名的指令如下

[root@client-110 /]# echo "$(hostname)_$(ifconfig eth1|awk 'NR==2{print $2}')_$(date +%F_%H)"
client-110_172.16.1.110_2024-11-20_15

2.5.创立符合要求的目录

[root@client-110 /]# mkdir -p /backup/$(hostname)_$(ifconfig eth1|awk 'NR==2{print $2}')_$(date +%F_%H)
[root@client-110 /]# ls /backup/
client-110_172.16.1.110_2024-11-20_15  etc.tgz  log.tgz
[root@client-110 /]# ll -h /backup/
总用量 11M
drwxr-xr-x 2 root root    6 11月 20 15:29 client-110_172.16.1.110_2024-11-20_15
-rw-r--r-- 1 root root  10M 11月 20 14:48 etc.tgz
-rw-r--r-- 1 root root 391K 11月 20 14:57 log.tgz

2.6.将之前打包好的备份包移动到该目录

[root@client-110 /]# mv /backup/*.tgz /backup/client-110_172.16.1.110_2024-11-20_15/
[root@client-110 /]# tree /backup/
/backup/
└── client-110_172.16.1.110_2024-11-20_15
    ├── etc.tgz
    └── log.tgz

1 directory, 2 files

3.文件传输

客户端最终经过rsync推送本地现已打包好的备份文件至备份服务器。
此处不展现服务端rysnc建立,请参阅1.在rsync-test-241服务器上建立rsync

3.1.1客户端装置rsync东西

[root@client-110 /]# yum install -y rsync
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
软件包 rsync-3.1.2-12.el7_9.aarch64 已装置并且是最新版别
无须任何处理

3.1.2运用RSYNC_PASSWORD变量与rsync服务端同步文件

[root@client-110 /]# export RSYNC_PASSWORD=mima666
[root@client-110 /]# rsync -avzP /backup/ [email protected]::backup-nfs
sending incremental file list
./
client-110_172.16.1.110_2024-11-20_15/
client-110_172.16.1.110_2024-11-20_15/etc.tgz
     10,406,491 100%   21.32MB/s    0:00:00 (xfr#1, to-chk=1/4)
client-110_172.16.1.110_2024-11-20_15/log.tgz
        399,728 100%  809.87kB/s    0:00:00 (xfr#2, to-chk=0/4)

sent 10,602,412 bytes  received 65 bytes  21,204,954.00 bytes/sec
total size is 10,806,219  speedup is 1.02

4.删去过期文件

客户端机器本地保存最近2天的数据,防止糟蹋磁盘空间

[root@client-110 /]# find /backup/ -mtime +2 -delete 

5.整合脚本

把上述拆解的进程,写成一个脚本、批量履行。

[root@client-110 /]# vim /scripts/autorsync.sh
[root@client-110 /]# cat /scripts/autorsync.sh 
#!/bin/bash
#0.装备环境变量
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
#1.创立符合要求的目录
mkdir -p /backup/"$(hostname)_$(ifconfig eth1|awk 'NR==2{print $2}')_$(date +%F_%H)"/

#2.打包要备份的数据
cd / && tar -czf /backup/$(hostname)_$(ifconfig eth1|awk 'NR==2{print $2}')_$(date +%F_%H)/etc.tgz etc
cd / && tar -czf /backup/$(hostname)_$(ifconfig eth1|awk 'NR==2{print $2}')_$(date +%F_%H)/log.tgz var/log

#3.履行同步
export RSYNC_PASSWORD=mima666
rsync -az /backup/ [email protected]::backup-nfs

#4.删去超越2天的过期文件
find /backup/ -mtime +2 -delete

6.调试脚本

[root@client-110 /]# bash -x /scripts/autorsync.sh 
++ hostname
++ ifconfig eth1
++ awk 'NR==2{print $2}'
++ date +%F_%H
+ mkdir -p /backup/client-110_172.16.1.110_2024-11-20_16/
+ cd /
++ hostname
++ ifconfig eth1
++ awk 'NR==2{print $2}'
++ date +%F_%H
+ tar -czf /backup/client-110_172.16.1.110_2024-11-20_16/etc.tgz etc
+ cd /
++ hostname
++ ifconfig eth1
++ awk 'NR==2{print $2}'
++ date +%F_%H
+ tar -czf /backup/client-110_172.16.1.110_2024-11-20_16/log.tgz var/log
+ export RSYNC_PASSWORD=mima666
+ RSYNC_PASSWORD=mima666
+ rsync -az /backup/ [email protected]::backup-nfs
+ find /backup/ -mtime +2 -delete

二、服务端

1.脚本化布置rsyncd服务端

服务端布置rsync,用于接纳客户端推送过来的备份数据
装备rsyncd服务端的的全流程请参阅1.在rsync-test-241服务器上建立rsync,也能够写成如下脚本,一键装置

#!/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-nfs]
comment = client backup!
path = /backup
EOF

useradd -u 1000 -M -s /sbin/nologin www
mkdir -p /backup
chown -R www:www /backup
echo "rsync_backup:mima666" > /etc/rsync.passwd
chmod 600 /etc/rsync.passwd
systemctl start rsyncd

2.校验数据完好性

服务端需求每次校验客户端推送过来的数据是否完好
经过md5sum指令即可生成文件的仅有校验值,等于增加了一个防伪符号。

2.1.此刻需求修正客户端client-110上的脚本了,多一个对文件校验的进程

[root@client-110 /]# vim autorsync.sh
[root@client-110 /]# cat autorsync.sh 
#!/bin/bash

#0.装备环境变量
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

#1.创立符合要求的目录
mkdir -p /backup/$(hostname)_$(ifconfig eth1|awk 'NR==2{print $2}')_$(date +%F_%H)/

#2.打包要备份的数据
cd / && tar -czf /backup/$(hostname)_$(ifconfig eth1|awk 'NR==2{print $2}')_$(date +%F_%H)/etc.tgz etc
cd / && tar -czf /backup/$(hostname)_$(ifconfig eth1|awk 'NR==2{print $2}')_$(date +%F_%H)/log.tgz var/log

#2.1增加文件校验
md5sum /backup/$(hostname)_$(ifconfig eth1|awk 'NR==2{print $2}')_$(date +%F_%H)/*.tgz > /backup/md5_tgz.txt


#3.履行同步
export RSYNC_PASSWORD=mima666
rsync -az /backup/ [email protected]::backup-nfs

2.2.客户端client-110修正完脚本后手动运转一次脚本

[root@client-110 /]# bash  /scripts/autorsync.sh 

2.3.此刻在rsync服务端rsync-test-241,能够经过指令校验文件完好性

[root@rsync-test-241 ~]# md5sum -c /backup/md5_tgz.txt 
/backup/client-110_172.16.1.110_2024-11-20_16/etc.tgz: 确认
/backup/client-110_172.16.1.110_2024-11-20_16/log.tgz: 确认
[root@rsync-test-241 ~]# 

3.邮件告诉

服务端需求每次校验的成果告诉给管理员

这儿照抄就好,需求更换为你自己的qq邮箱即可
然后需求翻开qq邮箱的smtp服务器的授权码
留意授权码别走漏给他人
#1.装置装备mailx:
yum install mailx -y

#2.邮箱装备文件

cat > /etc/mail.rc << 'EOF' 
set from=877348***[email protected]
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=877348***[email protected]
set smtp-auth-password=be********aje
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)" 877348***[email protected] < /backup/check_md5_result.txt

4.过期文件删去

服务端仅保存7天的备份数据,其他的悉数删去

[root@rsync-test-241 ~]#  find /backup/ -mtime +7 -delete

5.将服务端的操作汇总为脚本

[root@rsync-test-241 ~]# vim /scripts/checkrsync.sh
[root@rsync-test-241 ~]# cat /scripts/checkrsync.sh 
#!/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
#1.校验数据完好性
md5sum -c /backup/md5_tgz.txt > /backup/check_md5_result.txt
#2.发送邮件
mail -s "check-rsync-$(date +%F)" 877348***[email protected] < /backup/check_md5_result.txt
#3.删去过期文件
find /backup/ -mtime +7 -delete

三、设置守时使命

1.客户端要求每小时整点履行备份

[root@client-110 /]# crontab -e
crontab: installing new crontab
[root@client-110 /]# crontab -l
0 * * * * /bin/bash /scripts/autorsync.sh > /tmp/backup.log 2>&1

2.服务端要求每次同步后进行校验

[root@rsync-test-241 ~]# crontab -e
crontab: installing new crontab
[root@rsync-test-241 ~]# crontab -l
30 * * * * /bin/bash    /scripts/checkrsync.sh > /tmp/backup.log 2>&1

扫描二维码推送至手机访问。

版权声明:本文由51Blog发布,如需转载请注明出处。

本文链接:https://www.51blog.vip/?id=624

分享给朋友:

“Linux备份使命归纳试验” 的相关文章

windows安全日志,守护系统安全的利器

windows安全日志,守护系统安全的利器

Windows安全日志是记录系统安全审计事件的重要工具,它包含用户验证(如登录、远程访问等)和特定用户在认证后对系统所做的操作。以下是关于Windows安全日志的一些关键信息: 查看Windows安全日志的方法1. 使用事件查看器: 通过Win R键调出运行界面,输入“eventvwr.msc...

linux重启redis,Linux下Redis服务的重启方法详解

linux重启redis,Linux下Redis服务的重启方法详解

在Linux系统上重启Redis服务,通常可以通过以下几种方法来实现:1. 使用`systemctl`命令(如果Redis服务是通过systemd管理的): ```bash sudo systemctl restart redis ``` 或者,如果你想要重启Redis并查看输出,可...

嵌入式面试300问,全面解析嵌入式工程师面试必备知识

嵌入式面试300问,全面解析嵌入式工程师面试必备知识

一、C语言基础1. gcc编译器编译的完整流程: 预处理:头文件的展开、宏的替换、去掉注释、条件编译。 编译:检查语法,生成汇编。 汇编:汇编代码转换成机器码。 链接到一起生成可执行文件。2. 什么是回调函数? 回调函数是一段可执行的代码段,它作为一个参数传递给其他的...

windows10在线安装,如何让windows10更流畅

windows10在线安装,如何让windows10更流畅

1. 通过Windows更新安装更新: 打开“设置”应用。 点击“更新和安全”。 选择“Windows更新”。 点击“检查更新”,系统会自动检查并下载最新的更新。2. 通过Microsoft Store安装应用: 打开Microsoft Store。 搜索你想要安...

三星windows平板,便携与性能的完美结合

三星windows平板,便携与性能的完美结合

1. Galaxy TabPro S: 这是三星首款Windows 10二合一平板笔记本,采用了12英寸的Super AMOLED显示屏,分辨率为2160×1440,显示效果非常出色。 配备了Intel Core M处理器,提供了不错的性能表现,适合日常办公和轻度游戏。 电池续航时...

windows7扫描仪在哪里,Windows 7系统扫描仪程序位置及使用方法详解

windows7扫描仪在哪里,Windows 7系统扫描仪程序位置及使用方法详解

在Windows 7中,要找到并使用扫描仪,您可以按照以下步骤操作:1. 打开“开始”菜单:点击屏幕左下角的“开始”按钮。2. 搜索“Windows Fax and Scan”:在“开始”菜单的搜索框中输入“Windows Fax and Scan”,然后按回车键。3. 启动Windows Fax...