Shell实战——服务器定时自动备份脚本(生产可用)

📅 2026/7/25 23:39:50 👁️ 阅读次数 📝 编程学习
Shell实战——服务器定时自动备份脚本(生产可用)

一、前言

数据备份是运维底线!企业必须对网站数据、数据库、配置文件做定时备份。本脚本实现:打包备份、时间命名、自动压缩、自动清理过期备份、完整日志,配合 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 /恢复路径