Linux服务器定时任务Crontab配置

Linux服务器Crontab定时任务配置:自动备份网站实操指南

网站数据丢失是运维中最让人头疼的问题之一,而手动备份容易遗忘。
在Linux服务器上,使用Crontab定时任务配合备份脚本,可以每天自动打包网站文件和数据库,省时省力。
本文面向零基础用户,从脚本编写到定时任务配置逐步讲解,最终实现网站自动备份并验证结果。

备份前的环境检查与目录规划

开始之前,先确认服务器已安装crontabtar命令,绝大多数Linux发行版默认自带。
执行以下命令检查:

which crontab tar

如果均有路径返回,说明可用。
接着规划备份存放目录,建议放在独立分区或非网站根目录下,避免备份文件被公开访问。
例如:

mkdir -p /backup/web
mkdir -p /backup/db

同时确认网站文件路径和数据库连接信息,后面写脚本会用到。

编写网站文件与数据库备份脚本

手动执行备份命令没问题,但每天重复操作不现实。
我们写一个Shell脚本,把网站目录打包压缩,并用mysqldump导出数据库。
创建脚本文件:

vim /root/backup_web.sh

脚本内容参考如下,请根据实际路径修改:

#!/bin/bash
# 备份网站文件
WEB_DIR="/www/wwwroot/your_site"
BACKUP_DIR="/backup/web"
DATE=$(date +%Y%m%d)
tar -czf ${BACKUP_DIR}/web_${DATE}.tar.gz ${WEB_DIR}

# 备份MySQL数据库
DB_USER="root"
DB_PASS="your_password"
DB_NAME="your_database"
DB_BACKUP_DIR="/backup/db"
mysqldump -u${DB_USER} -p${DB_PASS} ${DB_NAME} | gzip > ${DB_BACKUP_DIR}/db_${DATE}.sql.gz

# 删除7天前的备份,避免磁盘占满
find ${BACKUP_DIR} -name "web_*.tar.gz" -mtime +7 -delete
find ${DB_BACKUP_DIR} -name "db_*.sql.gz" -mtime +7 -delete

保存后赋予执行权限:

chmod +x /root/backup_web.sh

避坑提醒:数据库密码直接写在脚本中存在安全风险,建议使用~/.my.cnf配置文件或环境变量。
另外,备份目录不要放在网站根目录下,否则备份文件可能被直接下载。

配置Crontab定时任务

脚本写好后,通过crontab -e编辑当前用户的定时任务。
首次使用会让你选择编辑器,选vimnano均可。
在文件末尾添加一行:

0 3 * * * /bin/bash /root/backup_web.sh >> /var/log/backup.log 2>&1

这行配置表示每天凌晨3点执行备份脚本,并把输出和错误信息追加到/var/log/backup.log
时间格式依次为:分、时、日、月、周。
例如30 2 * * 1表示每周一凌晨2点30分执行。

保存退出后,可以用crontab -l查看已配置的任务列表。

重要提示:如果脚本中使用了相对路径,务必在crontab中写绝对路径,因为cron执行时的环境变量与登录shell不同。

验证备份是否生效

配置完成后,不必等到凌晨。
可以手动执行一次脚本,检查是否报错:

/bin/bash /root/backup_web.sh

然后查看备份目录是否生成了带日期的压缩文件:

ls -lh /backup/web /backup/db

如果文件存在且大小合理,说明脚本正常。
接着检查日志文件:

tail -f /var/log/backup.log

观察是否有报错信息。
常见错误包括权限不足、数据库密码错误、磁盘空间不足等。
根据日志提示逐项排查即可。

常见问题与注意事项

Crontab任务没有执行:先确认cron服务是否运行,systemctl status crond(CentOS)或systemctl status cron(Ubuntu)。
再看日志/var/log/cron/var/log/syslog中是否有执行记录。

备份文件为空或损坏:检查脚本中的路径是否正确,特别是tar命令的源目录是否有多余空格。
数据库备份为空通常是因为密码错误或用户权限不足。

磁盘占满导致备份失败:脚本中已包含删除7天前备份的逻辑,但如果网站数据量很大,建议缩短保留天数或单独挂载备份盘。

安全建议:备份文件包含网站源码和数据库,应设置目录权限为700,并定期将备份下载到本地或对象存储。

总结

通过以上步骤,你已经完成了Linux服务器Crontab定时任务配置,实现了网站文件和数据库的自动备份。
核心流程是:编写备份脚本→设置执行权限→编辑crontab规则→验证结果。
建议先手动运行脚本确认无误,再交由cron自动执行。
日常运维中,定期检查备份日志和磁盘空间,可以避免关键时刻备份失效。

分享到:
上一篇
Linux服务器ssh密钥登录,禁用密码登录加固
下一篇
Linux磁盘满导致网站打不开,清理日志方法
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意