crontab定时备份归档任务需实现“脚本+计划+验证”闭环:脚本含时间戳命名、压缩打包、旧文件清理;crontab定时调用;日志与手动测试确保可靠。
用 crontab 定时执行 Linux 数据备份归档任务,核心是“脚本 + 计划 + 验证”三步闭环。脚本负责实际归档动作,crontab 负责按时调用,验证确保每次执行可靠不掉链子。
归档不是简单复制,要包含时间戳命名、压缩打包、旧文件清理三个基本动作。例如备份 /var/www/html 目录:
#!/bin/bash
BACKUP_DIR="/backup/web"
SOURCE_DIR="/var/www/html"
DATE=$(date +%Y%m%d_%H%M)
FILENAME="web_${DATE}.tar.gz"
# 确保目标目录存在
mkdir -p $BACKUP_DIR
# 打包并压缩
/bin/tar -zcf "$BACKUP_DIR/$FILENAME" -C "$SOURCE_DIR" .
# 删除 14 天前的归档文件
/usr/bin/find "$BACKUP_DIR" -name "web_*.tar.gz" -mtime +14 -delete
# 记录日志
echo "$(date): $FILENAME created, old backups cleaned" >> /var/log/backup.log
保存为 /usr/local/bin/backup-web.sh,然后运行:
chmod +x /usr/local/bin/backup-web.sh
注意:所有命令(如 tar、find)都使用绝对路径,避免 crontab 环境中找不到命令。
运行 crontab -e,添加一行(比如每天凌晨 2:30 执行):
30 2 * * * /usr/local/bin/backup-web.sh >> /var/log/backup.log 2>&1
这行含义是:
• 第1位(30):第30分钟
• 第2位(2):凌晨2点
• 后三位(* * *):每天、每月、每周任意
• 命令部分调用脚本,并把标准输出和错误全部追加到日志文件
如果想每周六上午 9 点执行,就改成:
0 9 * * 6 /usr/local/bin/backup-web.sh >> /var/log/backup.log 2>&1
crontab 不会自动启动 cron 守护进程,需手动检查:
归档任务容易因环境差异失败,必须提前规避: