以下是一份详细的迁移指南,请根据您的具体需求选择对应部分。

核心思路
迁移的本质是:移动文件 -> 2. 更新配置 -> 3. 验证测试。
迁移预训练模型文件(最常见)
OpenClaw 通常会从 Hugging Face 或 ModelScope 等平台下载大型预训练模型(如 Qwen、Llama 等),默认下载路径通常位于用户主目录的缓存中(如 ~/.cache/huggingface/hub)。
目标:将模型文件迁移到其他大容量磁盘。
方法A:使用符号链接(推荐,最简单)
这种方法不移动文件,而是创建一个“快捷方式”,让系统认为文件还在原位置,实际存放在新位置。
-
定位原路径:
# 通常在这里 ls -la ~/.cache/huggingface/hub/ # 或者通过Python代码查找 # from transformers import file_utils; print(file_utils.default_cache_path)
-
迁移文件:
# 1. 停止所有相关程序。 # 2. 复制(而非移动)模型文件到新位置,/data/models/。 cp -r ~/.cache/huggingface/hub /data/models/huggingface_hub # 3. (可选)复制完成后,备份并删除原文件以释放空间。 mv ~/.cache/huggingface/hub ~/.cache/huggingface/hub.bak
-
创建符号链接:
ln -s /data/models/huggingface_hub ~/.cache/huggingface/hub
验证:运行
ls -la ~/.cache/huggingface/,应该能看到hub -> /data/models/huggingface_hub。 -
更新环境变量(可选但更规范): 对于 Hugging Face,可以直接设置环境变量,无需创建符号链接。
# 在 ~/.bashrc 或 ~/.zshrc 中添加 export HF_HOME='/data/models/huggingface_hub' # 对于 ModelScope export MODELSCOPE_CACHE='/data/models/modelscope_cache'
然后执行
source ~/.bashrc,以后所有下载都会自动存到新路径。
方法B:修改代码或配置文件
在调用 from_pretrained 加载模型时,直接指定本地路径。
# 迁移后,改为 model_path = "/data/models/huggingface_hub/models--Qwen--Qwen2.5-7B-Instruct/snapshots/xxxxxx" # 或者您整理后的干净路径,如 /data/models/Qwen2.5-7B-Instruct/ model = AutoModelForCausalLM.from_pretrained(model_path)
迁移项目代码与数据
如果您想移动整个 OpenClaw 项目文件夹。
- 停止服务:确保所有相关的 Python 进程、Docker 容器都已停止。
- 压缩并移动:
tar -czf openclaw_backup.tar.gz /path/to/original/openclaw mv openclaw_backup.tar.gz /new/location/ cd /new/location tar -xzf openclaw_backup.tar.gz
- 更新所有路径引用:
- 配置文件:检查项目内的
config.yaml、.env等文件,更新其中的绝对路径。 - 启动脚本:检查
docker-compose.yml、run.sh中的卷挂载(volumes)和路径设置。 - Python 脚本:检查代码中硬编码的路径(如数据集加载、日志保存路径)。
- 配置文件:检查项目内的
- 更新环境变量:如果项目通过环境变量引用路径,请在 Shell 配置文件中更新。
- 重新安装依赖(如有必要):如果迁移到了不同系统环境,可能需要重建 Python 虚拟环境或 Docker 镜像。
Docker 环境下的路径迁移
OpenClaw 通过 Docker 运行,迁移主要是移动 Docker 卷(Volume)或绑定挂载(Bind Mount)的宿主主机路径。
-
停止容器:
docker-compose down
-
迁移数据卷:
- 找到当前数据目录:查看
docker-compose.yml中的volumes部分。 - 迁移数据:将宿主机上的对应目录复制到新位置。
rsync -av /var/lib/docker/volumes/openclaw_data/_data /new/data/location/ # 或者对于绑定挂载 rsync -av /path/to/old/bind/mount /path/to/new/bind/mount
- 找到当前数据目录:查看
-
修改 Docker 配置:
-
更新
docker-compose.yml中的卷定义。# 修改前 volumes: - ./data:/app/data - openclaw_models:/app/models # 修改后(绑定挂载示例) volumes: - /new/data/location:/app/data - /new/models/location:/app/models
-
如果使用命名卷,可能需要先
docker volume create,然后迁移数据进去。
-
-
重启容器:
docker-compose up -d
通用验证步骤
无论哪种场景,迁移后务必验证:
- 路径权限:确保新路径对运行进程(您的用户或 Docker 容器用户)有 读写权限。
chmod -R 755 /new/path # 根据实际情况调整
- 功能测试:
- 运行一个简单的推理示例。
- 执行一个训练或数据处理的步骤。
- 检查日志,确保没有
FileNotFoundError或权限错误。
- 回滚计划:在彻底删除原文件前,保持备份一段时间,直到确认新路径完全工作正常。
总结建议
- 首选方案:对于模型文件,使用环境变量(
HF_HOME)或符号链接,对系统改动最小,最安全。 - 保持清晰:在新位置建立清晰的目录结构,
/data/ai_models/ ├── huggingface/ ├── modelscope/ └── openclaw_projects/ - 文档更新:如果是在团队中操作,务必更新团队内部的部署文档。
请根据您的具体场景选择上述步骤,如果遇到更具体的问题(例如特定的错误信息),可以提供更多细节以便获得更精确的帮助。