linux下用cron实现自动备份的核心是“脚本+定时调度+环境适配”:需编写带时间戳、绝对路径调用命令、含清理逻辑的可执行脚本,通过crontab添加显式声明path/home的定时任务,并重定向日志至/var/log/backup.log以便监控。

Linux 下用 Cron 实现自动备份,核心是“脚本 + 定时调度 + 环境适配”。它不难,但容易因路径、权限或环境变量出错而静默失败。
写一个带时间戳的可执行备份脚本
脚本要独立运行成功,才可能被 Cron 正确调用。推荐放在用户主目录或 /opt/scripts/ 下,避免权限混乱。
- 用 nano 或 vim 创建脚本,例如:
nano ~/backup.sh - 开头必须写明解释器,如
#!/bin/bash - 用绝对路径调用命令(
/bin/tar、/usr/bin/mysqldump),别依赖 PATH - 文件名含时间戳:用
$(date +\%Y\%m\%d_\%H\%M)(注意 % 要转义) - 赋执行权限:
chmod +x ~/backup.sh - 手动运行一次验证:
~/backup.sh,检查目标目录是否生成了压缩包
用 crontab -e 添加定时任务
Cron 不读取 ~/.bashrc,所以不能靠登录环境。必须把任务加到当前用户的 crontab 里,而不是系统级 /etc/crontab。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 运行
crontab -e进入编辑模式(首次会提示选编辑器,推荐 nano) - 按格式填写:分 时 日 月 周 命令,例如每天凌晨 2:15 执行:
15 2 * * * /home/user/backup.sh - 如果脚本依赖特定环境变量(比如 PATH 或 HOME),在命令前显式声明:
15 2 * * * PATH=/usr/local/bin:/usr/bin:/bin HOME=/home/user /home/user/backup.sh - 保存退出后,用
crontab -l确认任务已生效
务必重定向输出和错误日志
没日志就等于没监控。Cron 默认不保留输出,失败时你也看不到任何提示。
- 在 crontab 条目末尾加上:
> /var/log/backup.log 2>&1 - 这样标准输出(如 echo 提示)和错误信息(如 “command not found”)都会记进日志
- 定期检查:
tail -n 20 /var/log/backup.log,确认最近几次执行是否成功 - 也可在脚本内部追加日志,比如最后一行写:
echo "$(date): backup done" >> /var/log/backup.log
验证 cron 服务是否运行并排查常见问题
即使 crontab 写对了,底层服务挂了也白搭。尤其在最小化安装的服务器上,cron 可能默认未启用。
- 查状态:
systemctl status cron(Debian/Ubuntu)或systemctl status crond(RHEL/CentOS) - 若未运行,启动并设开机自启:
sudo systemctl enable --now cron - 常见故障点:脚本路径写错、缺少执行权限、tar/mysqldump 路径没写全、密码含特殊字符导致解析失败、日志目录无写入权限
- 临时调试技巧:把 crontab 时间改成“每分钟执行”,等一两分钟看日志,快速验证逻辑










