自动备份需用tar打包、gzip压缩、date加时间戳、rsync同步远程,并通过cron定时执行;关键在路径权限正确、错误可查、日志完备、定期验证恢复。

用 Shell 脚本实现自动备份,核心是组合 tar 打包、gzip 压缩、date 生成时间戳、cp / rsync 复制到备份目录,并通过 cron 定时触发。关键在于路径正确、权限足够、错误可查。
基础备份脚本(本地归档)
以下脚本能打包指定目录,按日期命名,保留最近 7 天备份:
#!/bin/bash
# backup.sh
SOURCE_DIR="/var/www/html"
BACKUP_DIR="/backup"
DATE=$(date +%Y%m%d_%H%M)
ARCHIVE_NAME="backup_${DATE}.tar.gz"
<h1>创建备份目录(如不存在)</h1><p>mkdir -p "$BACKUP_DIR"</p><h1>打包压缩,排除临时文件</h1><p>tar -czf "$BACKUP_DIR/$ARCHIVE_NAME" \
-C "$(dirname "$SOURCE_DIR")" \
"$(basename "$SOURCE_DIR")" \
--exclude='<em>.log' \
--exclude='cache/</em>'</p><h1>删除 7 天前的备份</h1><p>find "$BACKUP<em>DIR" -name "backup</em>*.tar.gz" -mtime +7 -delete</p><h1>记录日志</h1><p>echo "[$(date)] Backup completed: $ARCHIVE_NAME" >> "$BACKUP_DIR/backup.log"</p><div class="aritcle_card flexRow">
<div class="artcardd flexRow">
<a class="aritcle_card_img" href="/ai/1108" title="Sora"><img
src="https://img.php.cn/upload/ai_manual/001/246/273/68b6d9768f95f970.png" alt="Sora" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a href="/ai/1108" title="Sora">Sora</a>
<p>Sora是OpenAI发布的一种文生视频AI大模型,可以根据文本指令创建现实和富有想象力的场景。</p>
</div>
<a href="/ai/1108" title="Sora" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a>
</div>
</div>保存为 /root/scripts/backup.sh,赋予执行权限:chmod +x /root/scripts/backup.sh
增强版:远程同步 + 错误检查
加一层 rsync 推送至远程服务器,失败时发邮件提醒(需已配置 mail 命令):
- 在脚本末尾添加 rsync 命令,使用免密 SSH:
rsync -az --delete "$BACKUP_DIR/" user@192.168.1.100:/backup/remote/ || echo "RSYNC FAILED at $(date)" | mail -s "Backup Alert" admin@example.com- 用
set -e开头让任意命令失败即退出,避免后续误执行 - 用
if [ $? -ne 0 ]; then ... fi检查 tar 是否成功,失败则退出并记录
加入定时任务(cron)
每天凌晨 2:30 执行备份:
- 运行
crontab -e - 添加一行:
30 2 * * * /root/scripts/backup.sh >/dev/null 2>&1 - 日志重定向到文件更利于排查(如
>/var/log/backup.log 2>&1) - 确保 cron 使用的 SHELL 环境变量与手动执行一致(可在 crontab 开头加
SHELL=/bin/bash)
验证与维护要点
自动备份不是设完就高枕无忧,需定期确认:
- 手动运行脚本一次,检查输出、归档文件是否生成、大小是否合理
- 用
tar -tzf backup_*.tar.gz | head -n 5快速查看压缩包内容 - 检查磁盘空间:
df -h /backup,防止备份填满分区 - 测试恢复流程:解压一个备份到临时目录,比对关键文件









