混元ocr模型自动备份脚本需以#!/bin/bash开头、utf-8编码,定义模型与备份路径,校验源目录存在性,用tar -c安全打包并排除日志和临时文件,再用find保留7天内备份。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要用 Shell 脚本自动化腾讯混元相关任务,比如启动 OCR 服务、定时备份模型、拉取镜像或监控 API 健康状态——这些操作不能靠点点点完成,必须写成可复用、可调度的脚本。
明确脚本用途与执行环境
先确认你要解决的具体问题:是部署混元 OCR API?还是备份 ~/hunyuan-ocr-webui/models/ 下的模型文件?或是定期调用混元 OCR 接口批量处理图片?不同目标决定脚本结构和依赖项。例如,GPU 环境下启动服务必须检查 nvidia-smi 是否可用,而纯 CPU 备份脚本则要避开 CUDA 相关命令。
所有混元 Shell 脚本必须以 #!/bin/bash 开头,且保存为 UTF-8 编码,禁止使用 Windows 换行符(\r\n),否则 exec format error 错误会直接中断执行。
编写混元 OCR 自动备份脚本
这是最常用也最容易出错的一类脚本,核心是保护 【模型文件】 ——它们体积大、下载慢、不可再生,一旦丢失需重新申请权限并等待审核。
第一步:创建脚本文件,命名为 hunyuan_model_backup.sh,用 vim 或 nano 编辑:
#!/bin/bash
第二步:定义关键路径与时间戳:
MODEL_DIR="$HOME/hunyuan-ocr-webui/models"BACKUP_DIR="$HOME/backups/hunyuan-models"TIMESTAMP=$(date +"%Y%m%d_%H%M%S")ARCHIVE_NAME="hunyuan_models_${TIMESTAMP}.tar.gz"
第三步:创建备份目录并校验源路径存在性:
mkdir -p "$BACKUP_DIR"if [[ ! -d "$MODEL_DIR" ]]; then echo "错误:模型目录不存在,请检查路径 $MODEL_DIR" exit 1fi
第四步:打包压缩,排除临时文件和日志:
tar -czf "$BACKUP_DIR/$ARCHIVE_NAME" -C "$HOME/hunyuan-ocr-webui" models --exclude='*.log' --exclude='tmp'
注意:这里必须用 -C 切换到父目录再指定 models,否则 tar 会把绝对路径打入归档,解压时可能覆盖系统根目录。
第五步:保留最近 7 个备份,删除更旧的:
find "$BACKUP_DIR" -name "hunyuan_models_*.tar.gz" -mtime +7 -delete
为混元 API 服务编写健康检测脚本
当你用 Docker 部署了混元 OCR API(如监听 http://localhost:8000/health),需要一个轻量级脚本判断服务是否存活,便于集成进 systemd 或 cron。
方法一:用 curl 检查 HTTP 状态码
#!/bin/bashURL="http://localhost:8000/health"TIMEOUT=5STATUS=$(curl -s -o /dev/null -w "%{http_code}" --max-time $TIMEOUT "$URL" 2>/dev/null)if [[ "$STATUS" == "200" ]]; then echo "✅ 服务正常" exit 0else echo "❌ 服务异常:HTTP $STATUS" exit 1fi
方法二:增强版,同时检查容器进程与端口占用(适合非 Docker 部署)
if ! pgrep -f "api_server.py" > /dev/null; then echo "进程未运行" exit 1elif ! lsof -i :8000 | grep LISTEN > /dev/null; then echo "端口未监听" exit 1fi
给脚本赋予执行权限并加入定时任务
执行 chmod +x hunyuan_model_backup.sh,确保它能被 shell 直接运行。
编辑用户级定时任务:crontab -e
添加一行实现每天凌晨 2:30 自动备份:
30 2 * * * /home/youruser/hunyuan_model_backup.sh >> /home/youruser/logs/backup.log 2>&1
注意:crontab 中的环境变量与交互式 shell 不同,$HOME 可能为空,务必在脚本内显式声明路径,不要依赖 ~ 或未导出的变量。











