从MAC电脑复制qwen3.5:4b 的OLLAMA模型到LINUX电脑实践

从 MAC 电脑复制 qwen3.5:4b 的 Ollama 模型到 Linux 电脑实践

最近在一台 Mac 上已经下载好了 qwen3.5:4b 的 Ollama 模型,但另一台 Linux 机器网络环境不方便重复拉取,于是就做了一次"本地模型迁移"。实际验证下来,这种方式完全可行:只要把 manifest 文件 和对应的 blob 文件 一起复制到 Linux 上正确的 Ollama 模型目录,再修正权限,Linux 端就能直接识别并运行该模型。

这篇文章把整个过程完整记录下来,方便以后自己查,也给有类似需求的朋友一个参考。


一、目标

将 Mac 上已经存在的 qwen3.5:4b 模型,直接复制到 Linux 机器上使用,避免重新 ollama pull

最终验证结果:

  • ollama list 能看到 qwen3.5:4b
  • ollama run qwen3.5:4b 可以正常启动并响应输入

这次实践最后已经成功跑通。


二、先理解 Ollama 模型文件结构

Ollama 的模型本地存储,核心上可以分成两部分:

1. manifests

记录模型"长什么样",以及它依赖哪些 blob 文件。

例如在 Mac 上,我找到的 manifest 文件路径类似这样:

bash 复制代码
~/.ollama/models/manifests/registry.ollama.ai/library/qwen3.5/4b

打开,看到如下内容:

{"schemaVersion":2,"mediaType":"application/vnd.docker.distribution.manifest.v2+json","config":{"mediaType":"application/vnd.docker.container.image.v1+json","digest":"sha256:de9fed2251b37295b763727a59ca35cf5cfe5c7379bc3e2104b2ce3c145aa887","size":475},"layers":{"mediaType":"application/vnd.ollama.image.model","digest":"sha256:81fb60c7daa80fc1123380b98970b320ae233409f0f71a72ed7b9b0d62f40490","size":3389971840},{"mediaType":"application/vnd.ollama.image.license","digest":"sha256:7339fa418c9ad3e8e12e74ad0fd26a9cc4be8703f9c110728a992b193be85cb2","size":11355},{"mediaType":"application/vnd.ollama.image.params","digest":"sha256:9371364b27a52acac9d87f88bd93c9db1174d8d6ec57f6888925cdc1788871ff","size":65}}

解析:

这个 4b 文件里是一个 JSON,大意是:

  • 一个 config digest
  • 多个 layer digest
  • 每个 digest 对应一个 blob 文件

也就是说,manifest 相当于目录索引 ,而真正的大模型内容在 blobs 目录里。

2. blobs

模型的真实内容文件都在这里,文件名通常是:

bash 复制代码
sha256-xxxxxxxx...

而 manifest 里写的是:

bash 复制代码
sha256:xxxxxxxx...

注意这里有一个细节:

  • manifest 里用的是冒号 :
  • blobs 文件名里用的是横杠 -

这点在手工迁移时要特别注意。


三、Mac 端准备:导出模型文件

1. 进入模型目录

在 Mac 上先进入:

bash 复制代码
cd ~/.ollama/models/

然后找到 qwen3.5:4b 对应的 manifest 文件。

2. 查看 manifest 内容

我当时看到的 4b 文件内容中,列出了 4 个关键 digest:

  • 一个 config
  • 一个 model 主文件
  • 一个 license
  • 一个 params

也就是说,需要一起复制:

  • manifests/registry.ollama.ai/library/qwen3.5/4b
  • blobs/sha256-... 共 4 个文件

3. 打包传输

我把需要的文件整理打包成了:

bash 复制代码
qwen35_4b_transfer.tar.gz

然后将这个压缩包复制到 Linux 机器上。


四、Linux 端定位 Ollama 模型目录

一开始我在 Linux 上习惯性地去找:

bash 复制代码
~/.ollama

结果发现根本不存在:

bash 复制代码
cd .ollama
-bash: cd: .ollama: No such file or directory

但这台机器明明已经能看到其他模型:

bash 复制代码
ollama list

输出中已有多个模型,例如:

  • qwen2.5-coder:7b
  • gemma3:4b-it-q4_K_M
  • deepseek-r1:1.5b

说明 Ollama 模型目录并不在当前用户家目录下。

继续检查后,发现这台 Linux 机器的模型目录实际在:

bash 复制代码
/usr/share/ollama/.ollama/models

并且下面已经有:

bash 复制代码
blobs  manifests

所以,这次迁移的目标位置就明确了。


五、Linux 端解压并检查文件

上传压缩包后,在 Linux 上执行:

bash 复制代码
tar xfv qwen35_4b_transfer.tar.gz

解压后目录结构大致是:

bash 复制代码
qwen35_4b_transfer/
├── blobs/
└── manifests/

其中 blobs/ 里包含 4 个目标文件。

一个小插曲:Mac 生成的 ._ 文件

解压时还出现了一个额外文件:

bash 复制代码
._sha256-7339fa418c9ad3e8e12e74ad0fd26a9cc4be8703f9c110728a992b193be85cb2

这是 Mac 打包时常见的资源分叉附带文件,不是 Ollama 需要的模型文件。日志里我把它删掉了:

bash 复制代码
rm ._sha256-7339fa418c9ad3e8e12e74ad0fd26a9cc4be8703f9c110728a992b193be85cb2

删掉后,blobs 目录中只保留真正的 4 个 sha256-... 文件。


六、把 blobs 复制到 Linux 的 Ollama 模型目录

进入解压后的 blobs 目录:

bash 复制代码
cd ~/qwen35_4b_transfer/blobs

然后复制到 Linux 的 Ollama blobs 目录:

bash 复制代码
sudo cp * /usr/share/ollama/.ollama/models/blobs/

这一步的含义很简单:

  • 把模型主数据文件复制过去
  • 让目标机器拥有与 manifest 对应的所有 blob 内容

七、复制 manifest 文件

接着进入 manifests 目录:

bash 复制代码
cd ~/qwen35_4b_transfer/manifests

然后执行:

bash 复制代码
sudo cp registry.ollama.ai/ /usr/share/ollama/.ollama/models/manifests -a

这里用了 -a 参数,递归保留目录结构复制。这样可以把:

bash 复制代码
registry.ollama.ai/library/qwen3.5/4b

完整放到目标机器的 manifest 目录下。

这一步非常关键,因为如果只有 blobs,没有 manifest,ollama list 通常是识别不出模型名称的。


八、修正权限

模型文件复制完成后,还需要把目录权限交给 ollama 用户:

bash 复制代码
sudo chown ollama /usr/share/ollama/.ollama/models/ -R

这是保证 Ollama 服务进程能够正常读取这些文件的重要一步。


九、验证是否导入成功

1. 查看模型列表

执行:

bash 复制代码
ollama list

结果里已经成功出现:

bash 复制代码
qwen3.5:4b             2a654d98e6fb    3.4 GB    7 minutes ago

说明模型已经被 Linux 端 Ollama 正确识别。

2. 实际运行测试

继续执行:

bash 复制代码
ollama run qwen3.5:4b

输入:

bash 复制代码
hello

模型已经能正常开始响应,说明迁移不仅"看得见",而且"跑得起来"。

到这里,这次从 Mac 复制 Ollama 模型到 Linux 的实践算是完整成功。


十、完整操作步骤汇总

如果只看命令,整个流程可以浓缩为下面几步。

Mac 端

  1. 找到 manifest 文件
  2. 根据 manifest 记录的 digest,找到对应 blobs
  3. 将 manifest 和 blobs 一起打包传到 Linux

Linux 端

  1. 找到实际模型目录
    这次机器上是:
bash 复制代码
/usr/share/ollama/.ollama/models
  1. 解压压缩包
bash 复制代码
tar xfv qwen35_4b_transfer.tar.gz
  1. 删除 Mac 附带的 ._ 文件(如果有)
bash 复制代码
rm ._sha256-...
  1. 复制 blobs
bash 复制代码
sudo cp * /usr/share/ollama/.ollama/models/blobs/
  1. 复制 manifests
bash 复制代码
sudo cp registry.ollama.ai/ /usr/share/ollama/.ollama/models/manifests -a
  1. 修正权限
bash 复制代码
sudo chown ollama /usr/share/ollama/.ollama/models/ -R
  1. 验证
bash 复制代码
ollama list
ollama run qwen3.5:4b

十一、这次实践里的几个关键经验

1. Linux 不一定在 ~/.ollama

这是我一开始最容易想当然的地方。

在这台机器上,虽然当前用户家目录下没有 .ollama,但 Ollama 一样可以正常运行,因为模型目录实际在:

bash 复制代码
/usr/share/ollama/.ollama/models

所以,迁移前一定要先确认目标机器 Ollama 的实际模型存储位置。

2. 不能只复制大模型文件

必须同时复制:

  • manifest
  • 所有关联 blobs

只拷大文件不够,缺少 manifest,Ollama 很可能不会识别出模型名。

3. Mac 打包可能带出 ._ 文件

这种文件不是模型本体,可以直接删掉,不然看起来会让目录显得"多了一个奇怪文件"。

4. 权限是最后的关键一步

文件都放对了,如果权限不对,Ollama 仍然可能无法正常读取。

所以 chown ollama ... -R 非常重要。


十二、结语

这次实践证明,Ollama 的本地模型是可以在不同机器之间手工迁移的。只要理解它的存储结构,本质上就是:

  • 找到 manifest
  • 找到对应 blobs
  • 保持目录结构复制到目标机器
  • 修正权限
  • 验证运行

对于局域网机器迁移、离线环境部署、或者避免重复下载大模型,这种方法都非常实用。

我这次最终在 Linux 上成功看到了:

bash 复制代码
~/qwen35_4b_transfer/manifests$ ollama run qwen3.5:4b
>>> hello
Thinking...
Thinking Process:

1.  **Analyze the Input:**
    *   Input: "hello"
    *   Intent: G^C

>>>
Use Ctrl + d or /bye to exit.
>>>
Use Ctrl + d or /bye to exit.
>>>

并且能够直接运行,这说明整个复制流程是有效的。

相关推荐
LZZ and MYY8 小时前
RTS 在windows和Linux之间ShareMem
linux·运维·服务器
aningx8 小时前
openSUSE Leap 16.0 运行 sunshine 报错的解决方法
linux
爱学习的徐徐8 小时前
Linux 基础IO
linux·服务器
zt1985q9 小时前
本地部署源代码管理解决方案 Bitbucket Data Center 并实现外部访问
运维·服务器·数据库·网络协议·postgresql·源代码管理
xiaobobo33309 小时前
面向对象:linux内核中函数转数据的用法
linux·面向对象·隔离·函数指针绑定
极客先躯9 小时前
高级java每日一道面试题-2026年01月18日-实战篇[Docker]-如何清理仓库中的旧镜像?
java·运维·docker·容器
姓刘的哦9 小时前
C++软件架构设计思路
linux
ModestCoder_9 小时前
windows/ubuntu解决挂梯子但是codex reconnecting五次的问题
linux·windows·ubuntu
禹凕9 小时前
Linux基础——环境
linux·运维·服务器·ubuntu
好好风格9 小时前
【一行代码】查看本机公网 IP
linux·命令行