是否遇到过误删重大文件、服务器日志被清空、系统崩溃无备份的情况?
今天这篇文章带你动手编写一个 Linux 一键备份系统脚本,让你的数据随时可恢复,彻底告别“删库跑路”焦虑!

一、脚本功能说明
本脚本的目标是让任何人都能一键完成备份:
✅ 自动备份指定目录(如 /etc、/home、/var/www)
✅ 自动生成压缩包并加时间戳
✅ 自动清理 7 天前的旧备份
✅ 支持日志输出与错误提示
✅ 可设置为每日定时执行
二、准备工作
在 Linux 服务器上,确保具备以下环境:
# 查看系统版本
cat /etc/os-release
# 确认 gzip 和 cron 已安装
sudo apt install gzip cron -y # Debian / Ubuntu
sudo yum install gzip cronie -y # CentOS / Rocky / AlmaLinux
三、编写备份脚本
使用 vim 创建脚本文件:
sudo vim /usr/local/bin/auto_backup.sh
在文件中粘贴以下内容
#!/bin/bash
# ===============================
# Linux 一键备份脚本 by jack zhang
# ===============================
# === 可自定义配置 ===
BACKUP_DIR=”/backup” # 备份存放目录
SOURCE_DIRS=”/etc /home /var/www” # 要备份的目录
LOG_FILE=”/var/log/auto_backup.log” # 日志路径
RETENTION_DAYS=7 # 保留天数
# === 初始化 ===
DATE=$(date +”%Y-%m-%d_%H-%M-%S”)
ARCHIVE_NAME=”backup_${DATE}.tar.gz”
TEMP_DIR=”${BACKUP_DIR}/temp”
mkdir -p “$BACKUP_DIR” “$TEMP_DIR”
# === 记录开始 ===
echo “[$(date '+%F %T')] 开始执行系统备份…” | tee -a “$LOG_FILE”
# === 打包压缩 ===
tar -czf “${BACKUP_DIR}/${ARCHIVE_NAME}” $SOURCE_DIRS 2>>”$LOG_FILE”
if [ $? -eq 0 ]; then
echo “[$(date '+%F %T')] ✅ 备份成功:${BACKUP_DIR}/${ARCHIVE_NAME}” | tee -a “$LOG_FILE”
else
echo “[$(date '+%F %T')] ❌ 备份失败,请检查日志” | tee -a “$LOG_FILE”
exit 1
fi
# === 删除过期备份 ===
find “$BACKUP_DIR” -type f -mtime +$RETENTION_DAYS -name “*.tar.gz” -exec rm -f {} ;
echo “[$(date '+%F %T')] 已清理 $RETENTION_DAYS 天前的旧备份” | tee -a “$LOG_FILE”
# === 完成 ===
echo “[$(date '+%F %T')] 备份任务结束” | tee -a “$LOG_FILE”
echo “——————————————–” >> “$LOG_FILE”
保存退出后执行以下命令赋予执行权限:
sudo chmod +x /usr/local/bin/auto_backup.sh
四、测试运行
手动执行一次:
sudo /usr/local/bin/auto_backup.sh
如果脚本正常工作,你将在 /backup 目录下看到:
backup_2025-10-16_13-30-22.tar.gz
并且日志会记录在 /var/log/auto_backup.log。
五、设置自动定时备份(cron)
打开 crontab 定时任务配置:
sudo crontab -e
在文件底部添加以下行(每天凌晨 2 点自动备份):
0 2 * * * /usr/local/bin/auto_backup.sh
保存后,cron 会自动按计划执行。
六、恢复备份示例
如果需要恢复 /etc 配置文件,可执行:
sudo tar -xzf /backup/backup_2025-10-16_13-30-22.tar.gz -C /
即可恢复原始文件路径。
七、进阶优化提议
|
功能 |
提议实现方式 |
|
增量备份 |
使用 rsync 或 tar –listed-incremental |
|
远程备份 |
使用 scp 或 rclone 上传到云端 |
|
邮件通知 |
配合 mailx 实现成功/失败通知 |
|
界面可视化 |
结合 Web 界面(如 Cockpit)查看备份历史 |
总结
这个一键备份脚本虽然简单,但却足以应对大多数个人与企业的基础备份需求。
运维的世界里,最怕的不是 bug,而是 没有备份的 bug。
动手写一个属于你自己的备份脚本吧,让系统安全更上一层楼!

















暂无评论内容