Linux服务器定时备份核心是cron调度,需确保时间准确、路径可靠、结果可追溯;选用tar/rsync或mysqldump工具,脚本用绝对路径并重定向日志,定期清理旧备份。

Linux 服务器定时数据备份,核心是把备份动作交给 cron 自动执行。关键不在于写多复杂的脚本,而在于时间调度准确、执行路径可靠、结果可追溯。
明确备份目标和工具选择
先确定要备份什么(比如 /var/www 或 MySQL 数据库),再选合适工具:
- 文件目录用
tar或rsync,例如tar -czf /backup/www_$(date +\%Y\%m\%d).tar.gz /var/www - MySQL 数据库用
mysqldump,注意密码不能明文暴露在命令行,建议用配置文件或环境变量 - 备份目标路径建议用绝对路径,且确保目标目录存在、有写入权限(如
/backup)
编写可执行的备份脚本
把命令封装成 .sh 脚本,便于调试和复用。例如:
#!/bin/bash
BACKUP_DIR="/backup"
DATE=$(date +\%Y\%m\%d)
tar -czf "${BACKUP_DIR}/www_${DATE}.tar.gz" /var/www 2>> "${BACKUP_DIR}/backup.log"保存为 /usr/local/bin/backup_www.sh,然后赋予执行权限:chmod +x /usr/local/bin/backup_www.sh
手动运行一次确认无报错,再接入定时任务。
用 crontab 设置调度规则
运行 crontab -e 编辑当前用户任务,添加一行:30 2 * * * /usr/local/bin/backup_www.sh
这表示每天凌晨 2:30 执行。注意:
- cron 默认使用 minimal shell 环境,PATH 很窄,务必用命令绝对路径(如
/bin/tar、/usr/bin/mysql) -
%在 crontab 中有特殊含义,日期格式里的\%是转义写法 - 建议重定向输出:
>> /var/log/backup.log 2>&1,方便查失败原因
区分用户级与系统级任务
- 普通备份脚本用
crontab -e即可,以当前用户身份运行 - 若需 root 权限(如备份
/etc或重启服务),要么用sudo crontab -e,要么写进/etc/crontab并显式指定用户字段:0 3 * * * root /usr/local/bin/backup_system.sh - 不推荐直接编辑
/etc/crontab,除非明确需要跨用户调度
验证和日常维护
- 查看任务列表:
crontab -l - 检查 cron 服务是否运行:
systemctl status cron(或crond) - 日志默认不记录 cron 执行详情,可临时加
MAILTO="your@email.com"接收执行结果邮件(需配置本地邮件服务) - 定期清理旧备份,避免磁盘占满,可在脚本末尾加
find /backup -name "www_*.tar.gz" -mtime +7 -delete
不复杂但容易忽略细节


















