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 /恢复路径