用crontab定时打包linux目录需三步闭环:编写指定源目录、备份路径、命名规则和tar-czf压缩的脚本;chmod+x赋予执行权限并手动测试;crontab-e添加定时任务(如0 2 * /path/backup_dir.sh),生产环境建议加7天清理和日志记录。

用 Crontab 定时打包 Linux 目录,核心是“脚本 + 权限 + 定时任务”三步闭环。关键不在 crontab 本身,而在于脚本是否可靠、路径是否正确、权限是否到位。
写一个可执行的打包脚本
脚本要明确指定源目录、备份位置、命名规则和压缩方式。推荐使用 tar -czf 打包并 gzip 压缩:
- 新建脚本,例如 /home/user/backup_dir.sh
- 内容示例(请按实际路径修改):
#!/bin/bash<br>SOURCE="/var/www/html"<br>DEST="/backup"<br>NAME="html_$(date +\%Y%m%d_\%H%M%S).tar.gz"<br>mkdir -p "$DEST"<br>tar -czf "$DEST/$NAME" -C "$(dirname "$SOURCE")" "$(basename "$SOURCE")"
- 注意:-C 参数确保打包时不带绝对路径前缀,避免解压时污染根目录
- 如需排除某些子目录(如缓存),加 --exclude=cache --exclude=logs
给脚本加上执行权限
Linux 不会自动执行没有权限的脚本:
- 运行:chmod +x /home/user/backup_dir.sh
- 测试手动执行是否成功:/home/user/backup_dir.sh
- 检查 /backup 目录下是否生成了 .tar.gz 文件
- 若报“Permission denied”,确认当前用户对 SOURCE 有读权限、对 DEST 有写权限
用 crontab 添加定时任务
编辑当前用户的定时任务表:
- 运行:crontab -e
- 添加一行(例如每天凌晨2点执行):
0 2 * * * /home/user/backup_dir.sh - 时间字段顺序:分 时 日 月 周 命令(注意空格,不是 Tab)
- 保存退出后,可用 crontab -l 确认任务已写入
- 系统级任务(如需 root 权限操作)用 sudo crontab -e
附加建议:让备份更稳妥
生产环境建议补充以下逻辑,避免磁盘被占满或备份堆积:
- 在脚本末尾加清理命令,只保留最近7天备份:
find /backup -name "html_*.tar.gz" -mtime +7 -delete - 加简单日志记录,方便排查:
echo "$(date): backup done" >> /var/log/backup.log - 首次部署后,等几分钟再检查 /var/log/syslog 或 /var/log/cron 是否有执行记录
- 不建议直接在 crontab 里写 tar 命令——出错难调试,也不易复用和维护











