容器跨主机数据迁移同步AI模型文件脚本

容器里训练好的 AI 模型文件通常放在 Docker 数据卷或容器可写层,重建容器或更换服务器时非常容易丢失。
本文用两台 Linux 服务器为例,教你用 docker cp 配合 rsync 写一个可复用的跨主机迁移同步脚本,让 AI 模型文件迁移变得可控、可校验、可定时执行。
适合刚接触 Docker 的零基础运维用户,按步骤操作即可完成。

迁移前需要确认三件事

  1. 两台服务器能互相访问,建议在内网环境下传输,速度更快。
  2. 两台服务器都安装 Docker 和 rsync。Ubuntu 执行 apt install docker.io rsync -y,CentOS 执行 yum install docker rsync -y
  3. 确定模型文件在容器里的实际路径。进入容器查看:
docker exec -it 容器名 sh
ls /app/models

如果想确认容器是否挂载了数据卷,执行:

docker inspect 容器名 --format='{{range .Mounts}}{{.Source}} -> {{.Destination}}{{println}}{{end}}'

如果看到类似 /var/lib/docker/volumes/xxx/_data -> /app/models 的映射,说明模型文件已经持久化在宿主机的数据卷目录;
如果没有映射,文件只在容器可写层,必须先把文件完整复制出来。

把容器里的模型文件完整取出来

以容器名 ai_app 为例,将容器内 /app/models 目录复制到宿主机 /data/models

docker cp ai_app:/app/models /data/models

如果你的模型文件已经挂载到宿主机的数据卷目录,就可以跳过这一步。
复制完成后记录文件总大小与总数,方便后续比对:

du -sh /data/models
find /data/models -type f | wc -l

注意:不要直接用 * 通配符复制目录内的文件,否则容易漏掉以 . 开头的隐藏文件。
直接复制整个目录最稳妥。

用 rsync 脚本实现跨主机自动同步

rsync 通过 SSH 传输,支持增量同步和断点续传,特别适合动辄几个 GB 的 AI 模型文件。
先配置 SSH 免密登录,避免脚本执行时被卡在密码输入:

ssh-keygen -t rsa -b 4096
ssh-copy-id root@目标服务器IP

然后创建同步脚本 /usr/local/bin/sync_models.sh

#!/bin/bash
SRC="/data/models"
DEST="root@目标服务器IP:/data/models"
LOG="/var/log/sync_models.log"

rsync -avz --delete --partial --timeout=60 $SRC $DEST >> $LOG 2>&1

if [ $? -eq 0 ]; then
  echo "$(date '+%F %T') sync ok" >> $LOG
else
  echo "$(date '+%F %T') sync failed" >> $LOG
  exit 1
fi

给脚本添加执行权限并手动运行一次:

chmod +x /usr/local/bin/sync_models.sh
/usr/local/bin/sync_models.sh

这里解释几个参数:--delete 会让目标端删除源端不存在的文件,保证两边目录完全一致;--partial 支持传输中断后继续;--timeout=60 避免 SSH 长时间无响应导致脚本卡死。
如果你不确定 --delete 的影响,可以先去掉它,只做增量复制。

添加定时任务让模型文件持续同步

如果训练任务会持续产出新的模型文件,可以把同步脚本加入 crontab,实现自动定时同步。
运行:

crontab -e

添加一行,每小时同步一次:

0 * * * * /usr/local/bin/sync_models.sh

如果希望更频繁,可以改成每 10 分钟一次:

*/10 * * * * /usr/local/bin/sync_models.sh

建议在 crontab 中使用 flock 防止上次任务没跑完、下次任务又启动:

*/10 * * * * /usr/bin/flock -xn /tmp/sync_models.lock -c /usr/local/bin/sync_models.sh

验证迁移结果并避开常见坑

同步完成后,在目标服务器上执行:

du -sh /data/models
find /data/models -type f | wc -l

对比文件总大小和数量是否和源端一致。
如果一致,基本可以确认迁移成功。
需要更严谨的话,对关键模型文件执行 MD5 校验:

md5sum 模型文件名

几个容易踩的坑:

  • 模型文件只存在容器可写层:容器删除后数据就没了,必须提前用 docker cp 备份到宿主机,或者直接挂载数据卷。
  • rsync 源路径末尾是否加 /rsync -avz /data/models /data//data/models/ /data/ 的行为不同,前者会在目标端生成 models 子目录,后者直接把内容铺到目标目录,建议先小范围测试。
  • 隐藏文件被漏掉:用通配符复制目录内容时会漏掉 .env.git 这类文件,直接复制整个目录可以避免。
  • 同步任务重叠:大模型文件传输时间超过定时间隔时,多个 rsync 进程会互相争抢资源,用 flock 加锁解决。

如果你正在处理容器跨主机数据迁移同步 AI 模型文件脚本,建议先按本文步骤完整执行,再根据自己的目录结构和网络环境做微调。
遇到异常时优先回看上面的避坑说明,同时可以进一步了解 Docker 数据卷持久化配置,从根源上降低模型文件丢失风险。

分享到:
上一篇
防盗链Nginx规则保护产品原图防止盗用下载
下一篇
robots屏蔽无效垃圾爬虫恢复搜索引擎收录量
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意