后面的文档我会分批次分享和编辑,一般情况下每天2个编程
主要在备考软考,各位同学XDM请见谅!
1. Linux系统备份脚本
日常企业运维中,需要备份Linux操作系统中重要的文件,例如/etc、/boot分区,重要网站数据等。在备份时,由于数据量非常大,需要指定高效的备份方案,以下为常用的备份数据方案:
(1)每周日进行完整备份,周一~周六使用增量备份。
(2)每周六进行完整备份,周日~周五使用增量备份。
企业备份数据的工具主要有tar、cp、rsync、scp、sersync、dd等。以下为基于开源tar工具实现系统数据备份方案。
tar工具手动全备份网站,-g参数指定新的快照文件。
tar -g /tmp/snapshot -czvf /tmp/2024_full_system_data.tar.gz /data/sh/
tar工具手动增量备份网站,-g参数指定全备已生成的快照文件,后续增量备份基于上一个增量备份快照文件。
tar -g /tmp/snapshot -czvf /tmp/2024_add01_system_data.tar.gz /data/sh/
tar工具全备份、增量备份网站,Shell脚本实现自动打包备份编写思路如下:
(1)系统备份数据按每天存放。
(2)创建完整备份函数块。
(3)创建增量备份函数块。
(4)根据星期数判断完整或增量。
(5)将脚本加入Crontab实现自动备份。
tar工具全备份、增量备份网站,Shell脚本实现自动打包备份,相关代码如下:
#!/bin/bash
# 声明这个脚本使用的解释器为 bash
#Auto Backup Linux System Files
#By author jfedu.net 2021
# 设置脚本作者和年份的注释
#Define Path variables
# 定义路径变量
SOURCE_DIR=(
$*
)
# 设置源目录变量,可以通过命令行参数传入多个目录
TARGET_DIR=/data/backup/
# 设置备份目录的路径
YEAR='date +%Y'
MONTH='date +%m'
DAY='date +%d'
WEEK='date +%u'
A_NAME='date +%H%M'
# 设置日期和时间变量
FILES=system_backup.tgz
# 设置备份文件名
CODE=$?
# 设置退出码变量
if
[ -z "$*" ];then
echo -e "\033[32mUsage:\nPlease Enter Your Backup Files or Directories\
n--------------------------------------------\n\nUsage: { $0 /boot /etc}\
033[0m"
exit
fi
# 如果没有输入任何参数,则输出用法信息并退出脚本
#Determine Whether the Target Directory Exists
# 判断备份目录是否存在
if
[ ! -d $TARGET_DIR/$YEAR/$MONTH/$DAY ];then
mkdir -p $TARGET_DIR/$YEAR/$MONTH/$DAY
echo -e "\033[32mThe $TARGET_DIR Created Successfully !\033[0m"
fi
# 如果备份目录不存在,则创建备份目录
#EXEC Full_Backup Function Command
# 执行完整备份函数命令
Full_Backup()
{
if
[ "$WEEK" -eq "7" ];then
rm -rf $TARGET_DIR/snapshot
cd $TARGET_DIR/$YEAR/$MONTH/$DAY ;tar -g $TARGET_DIR/snapshot -czvf
$FILES ${SOURCE_DIR[@]}
[ "$CODE" == "0" ]&&echo -e "---------------------------------------
-----\n\033[32mThese Full_Backup System Files Backup Successfully !\033[0m"
fi
}
# 如果是周日,则执行完整备份函数,使用 tar 命令将源目录备份到指定位置
#Perform incremental BACKUP Function Command
# 执行增量备份函数命令
Add_Backup()
{
if
[ $WEEK -ne "7" ];then
cd $TARGET_DIR/$YEAR/$MONTH/$DAY ;tar -g $TARGET_DIR/snapshot -czvf
$A_NAME$FILES ${SOURCE_DIR[@]}
[ "$CODE" == "0" ]&&echo -e "------------------------------------
-----\n\033[32mThese Add_Backup System Files $TARGET_DIR/$YEAR/$MONTH/
$DAY/${YEAR}_$A_NAME$FILES Backup Successfully !\033[0m"
fi
}
# 如果不是周日,则执行增量备份函数,使用 tar 命令将源目录备份到指定位置,并输出备份成功信息
sleep 3
# 休眠 3 秒
Full_Backup;Add_Backup
# 执行完整备份和增量备份函数
在Crontab任务计划中添加如下语句,每天凌晨1点整执行备份脚本即可。
0 1 * * * /bin/sh /data/sh/auto_backup.sh /boot /etc/ >> /tmp/back.log
2>&1