Shell实战——服务器定时自动备份脚本(生产可用)
本文介绍了一个企业级自动备份脚本,实现定时打包备份服务器数据。脚本功能包括:多目录同时备份、时间戳命名(避免覆盖)、自动压缩、日志记录以及自动清理7天前的旧备份。核心代码展示了一个完整的bash脚本实现,包括备份目录设置、tar打包、错误处理和过期清理。文章还提供了crontab定时任务配置方法(每天凌晨2点执行),以及简单的恢复指令(使用tar解压)。该方案特别强调备份是运维底线,适合网站数据、
·
一、前言
数据备份是运维底线!企业必须对网站数据、数据库、配置文件做定时备份。本脚本实现:打包备份、时间命名、自动压缩、自动清理过期备份、完整日志,配合 crontab 实现无人值守定时备份。
二、企业级自动备份脚本(完整版)
#!/bin/bash
# 服务器数据定时备份脚本
# 备份源目录
BACKUP_SRC="/usr/share/nginx/html /etc/nginx"
# 备份存放目录
BACKUP_DIR="/data/backup"
# 备份时间后缀
DATE=$(date +%Y%m%d_%H%M%S)
# 备份文件名
BACKUP_FILE="backup_${DATE}.tar.gz"
# 日志路径
LOG_FILE="/var/log/backup.log"
# 过期保留天数(7天)
SAVE_DAY=7
# 日志函数
log(){
echo "[$(date +%Y-%m-%d\ %H:%M:%S)] $1" | tee -a $LOG_FILE
}
# 创建备份目录
[ ! -d $BACKUP_DIR ] && mkdir -p $BACKUP_DIR
log "===== 开始执行备份 ====="
# 打包压缩备份
tar -zcvf $BACKUP_DIR/$BACKUP_FILE $BACKUP_SRC &>/dev/null
if [ $? -eq 0 ];then
log "备份成功:$BACKUP_DIR/$BACKUP_FILE"
else
log "备份失败!"
exit 1
fi
# 自动清理7天前过期备份
find $BACKUP_DIR -name "backup_*.tar.gz" -mtime +$SAVE_DAY -delete
log "已清理${SAVE_DAY}天前过期备份文件"
log "===== 备份任务结束 ====="
三、脚本亮点
-
支持多目录同时备份
-
时间戳命名,永不覆盖
-
自动清理过期备份,不占磁盘
-
备份失败有日志告警
四、配置 Crontab 定时任务
设置每天凌晨2点自动执行备份
crontab -e
# 写入内容
0 2 * * * /bin/bash /data/backup.sh
五、备份恢复方式
tar -xvf 备份文件 -C /恢复路径
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)