云站指南建站与运维知识库
Linux 入门入门约 9 分钟

Linux 定时任务入门:用 crontab 自动备份

把 crontab 五字段记成"分时日月周"口诀,落到一个每天自动打包网站的实例,避开服务器时区错位与百分号转义两个经典坑。

云站编辑组 · 内容编辑与技术审校发布于 2026年10月30日更新于 2026年10月30日0 次阅读涉及生产变更时,请先备份并验证

人工备份终会忘,交给定时任务

"我每周手动备一次份"的计划,通常活不过第一个月。Linux 自带的 crontab 能让服务器在指定时间自己干活:打包备份、清理日志、续期证书,都是它的经典用途。学会它,你的网站从"靠人记"变成"自己管自己"。

五字段口诀:分 时 日 月 周

每条 crontab 规则长成"五颗星 + 一条命令":从左到右依次是 分(0-59)、时(0-23)、日(1-31)、月(1-12)、周(0-7,0 和 7 都是周日)。位置对应单位,写数字就是"到点执行",写 * 就是"每个都行"。

写法含义示例
30 3 * * *每天 3:30每天凌晨备份
*/10 * * * *每 10 分钟高频健康检查
0 5 * * 1每周一 5:00每周初整理
0 0 1 * *每月 1 日 0:00月初归档

进阶写法三条就够用:区间 a-b(3-6 点)、列表 a,b,c(周一和周五)、步长 */n(每 n 个单位)。不确定表达式对不对,先在在线工具里预览未来几次执行时间,再贴进服务器。

三条命令走完全程

crontab -e    # 编辑当前用户的定时任务
0 3 * * * tar -czf /var/backups/site-$(date +\\%F).tar.gz /var/www/html >> /var/log/site-backup.log 2>&1

crontab -l    # 列出已生效的任务
grep CRON /var/log/syslog   # 查看是否真的执行过

上面这条就是本文标题里的实例:每天 3 点把网站目录打包成带日期的压缩文件,输出追加进日志。注意命令里的 % 必须写成 \\% ——crontab 会把 % 当换行符,这是新手最常见的一条"命令手动能跑、放进 crontab 就废"的原因。输出记得重定向到日志文件,否则执行结果无处可查。

两个经典坑

服务器时区和你想的不一样

多数云服务器默认时区是 UTC:你写的"凌晨 3 点"实际是北京时间上午 11 点,备份高峰全撞在白天。先用 date 看服务器当前时间,不对就改时区,或者干脆按 UTC 写表达式——换算用 UTC 时间转换工具,别心算。

以为写上就完事了

定时任务没有"保存成功"提示,唯一可信的验收方式是等它执行一次、去日志和备份目录确认产物真的出现。上线第一周每天看一眼日志,比出事后才发现三个月没备份强太多。

一句话总结与下一步

口诀"分时日月周" + 命令里转义 % + 输出进日志,这三件事记住,crontab 就从"高级运维"变成你能日常使用的工具。

下一步该读什么

本文要点

先收集证据,再进行小范围变更;操作前留好备份,操作后用明确的检查项验证结果。

crontabLinux自动备份

继续学习

继续阅读

全部教程