自动化备份脚本应先实现最简功能:打包指定目录、日期命名、存至固定路径;再逐步添加自动清理(如保留7天)、日志记录、错误检查(set -e、$?判断)、绝对路径调用及锁机制防重复执行。

靠人工每天登录服务器打包、压缩、传文件,不仅容易漏,还占时间。用脚本把备份变成“开机即运行”的后台动作,才是释放运维精力的关键。核心不是写得多复杂,而是让每一步都稳、可查、能回收。
脚本要先跑通再加功能
别一上来就堆全量+增量+邮件通知。先写一个最简版本,只做三件事:打包指定目录、加日期命名、存到固定路径。比如:
- 用 tar -czf 压缩,加上 --preserve-permissions 和 --acls,确保权限和访问控制不丢
- 文件名里嵌入 $(date +%Y%m%d_%H%M),避免覆盖,也方便按时间定位
- 目标路径提前 mkdir -p 创建,不依赖手动建目录
自动清理旧备份,防磁盘塞满
备份越积越多,磁盘爆掉比数据丢更常见。清理不能靠人想起来删,得写进脚本里执行:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 用 find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete,保留最近7天
- 如果备份频率高(如每小时一次),改用 -mmin +4320(7天=4320分钟)更准
- 加个 echo "$(date): Removed $(find ... | wc -l) old backups" 到日志,清楚知道删了几个
加日志和错误检查,出问题马上知道
脚本静默运行时最危险——失败了你却不知道。两处必须加:
- 开头加 set -e,任意命令失败立刻退出,不继续执行后续可能出错的步骤
- 关键操作后判断 $?,比如 tar 执行完,写一句 if [ $? -ne 0 ]; then echo "tar failed" >> backup.log; exit 1; fi
- 所有输出重定向到日志:exec >> /var/log/backup.log 2>&1,连时间戳都省得自己写
用 crontab 定时,但别只设时间
crontab 是触发器,不是保险丝。光写 0 2 * * * /path/to/backup.sh 不够:
- 脚本路径用绝对路径,避免 cron 环境变量缺失导致找不到命令
- 在脚本开头加 cd / && source /etc/profile 或显式声明 PATH,防止 tar、date 等命令找不到
- 加个锁机制,比如创建 /tmp/backup.lock 文件,脚本启动先检查是否存在,有就退出,避免上一次没跑完又触发新任务










