Linux定时备份需确保脚本路径绝对、权限正确、日志开启、服务运行;编写含时间戳和7天清理的备份脚本,用crontab配置定时任务并重定向日志,最后验证cron服务状态。

Linux 设置定时任务自动备份文件,关键在于“脚本写对 + 任务配准 + 日志看住”。它不复杂,但容易因路径、权限或环境变量出错而静默失败。
写一个带时间戳和清理逻辑的备份脚本
脚本必须能独立运行成功,Cron 才可能调用它。推荐放在 /usr/local/bin/ 或用户主目录下,避免权限混乱。
- 开头声明解释器:
#!/bin/bash - 所有路径用绝对路径(如
/usr/bin/tar、/bin/date),别依赖PATH - 定义变量时用时间戳命名文件:
DATE=$(date +\%Y\%m\%d_\%H\%M\%S)(注意%要转义) - 检查并创建备份目录:
mkdir -p /backup - 执行备份:
tar -czf /backup/backup_${DATE}.tar.gz /home/user/docs - 自动清理旧文件:
find /backup -name "backup_*.tar.gz" -mtime +7 -delete - 赋予执行权限:
chmod +x /usr/local/bin/backup.sh - 手动运行一次验证:
/usr/local/bin/backup.sh,确认压缩包生成且无报错
用 crontab 添加定时任务
Cron 不读取你的 .bashrc,所以不能靠登录环境。必须用当前用户的 crontab -e 编辑:
- 运行
crontab -e(首次会提示选编辑器,推荐nano) - 按格式填写:
分 时 日 月 周 命令,例如每天凌晨 2:15 执行:15 2 * * * /usr/local/bin/backup.sh - 如果脚本依赖
PATH或HOME,显式声明:15 2 * * * PATH=/usr/local/bin:/usr/bin:/bin HOME=/root /usr/local/bin/backup.sh - 保存后用
crontab -l确认任务已生效
务必重定向日志并检查执行状态
没日志就等于没监控。Cron 默认丢弃所有输出:
- 在 crontab 条目末尾加:
>> /var/log/backup.log 2>&1 - 或在脚本末尾追加:
echo "$(date): backup done" >> /var/log/backup.log - 定期查看:
tail -n 10 /var/log/backup.log,确认最近执行是否成功 - 同时检查磁盘空间:
df -h /backup,避免旧备份撑爆磁盘
确认 cron 服务正在运行
最小化安装的系统常默认未启用 cron:
- 查状态:
systemctl status cron(Debian/Ubuntu)或systemctl status crond(RHEL/CentOS) - 若未运行:
sudo systemctl enable --now cron - 验证进程:
ps aux | grep cron,确保服务活跃
不复杂但容易忽略细节。只要脚本路径绝对、权限正确、日志开着、服务开着,备份就能稳稳跑起来。


















