最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如何用Crontab定时执行Linux数据备份归档任务
时间:2026-07-26 08:30:48 编辑:袖梨 来源:一聚教程网
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 中添加定时归档任务
运行 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
确认 cron 服务运行且脚本能独立执行
crontab 不会自动启动 cron 守护进程,需手动检查:
- 查看状态:systemctl status cron(Debian/Ubuntu)或 systemctl status crond(CentOS/RHEL)
- 若未运行,执行:sudo systemctl start cron 并启用开机自启:sudo systemctl enable cron
- 手动运行脚本测试:/usr/local/bin/backup-web.sh,检查 /backup/web/ 下是否生成新文件、/var/log/backup.log 是否有记录
- 用 crontab -l 确认任务已写入,无语法错误
归档任务的关键细节提醒
归档任务容易因环境差异失败,必须提前规避:
- 脚本开头显式声明 PATH,例如:PART=/usr/local/bin:/usr/bin:/bin:/sbin export PATH
- 备份目标目录(如 /backup/web)需提前创建,并确保运行脚本的用户有读源目录、写目标目录的权限
- 数据库归档需额外处理认证,避免密码明文;建议用 ~/.my.cnf 配置 MySQL 登录凭据,再调用 mysqldump
- 定期检查磁盘空间:df -h /backup,防止归档填满磁盘导致后续失败
相关文章
- 三角洲行动仿星器控制室位于何处 07-28
- 三角洲行动压水堆服务器室在何处 07-28
- 三角洲行动铁路通道何处 07-28
- 三角洲行动托卡马克数据中心在哪 07-28
- 三角洲行动后处理厂机房何在 07-28
- 梦幻西游女魃墓69级装备搭配 07-28