从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.
>>>

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

相关推荐
cui_ruicheng2 小时前
Linux文件系统(三):VFS 结构与软硬链接详解
linux·运维·服务器
mmWave&THz2 小时前
传统微波IDU与数字IP微波ODU扩展单元(数字微波IDU)技术对比分析
大数据·运维·网络·tcp/ip·系统架构·信息与通信·智能硬件
IMPYLH2 小时前
Linux 的 sha384sum 命令
linux·运维·服务器·网络·bash·哈希算法
余衫马2 小时前
在 Windows 服务中托管 ASP.NET Core Web API (.net6)
运维·windows·后端·asp.net·.net
计算机安禾2 小时前
【Linux从入门到精通】第11篇:进程管理入门——认识正在运行的“灵魂”
linux·运维·服务器
wuminyu2 小时前
专家视角看 Java 字节码与Class 文件格式
java·linux·c语言·jvm·c++
skywalk81632 小时前
AtomCode AI 编程助手尝试在linux下安装(未完成)
linux·运维·服务器
拾贰_C2 小时前
【Ubuntu | Anaconda | miniconda3】寻找已存在的 |miniconda3|
linux·运维·ubuntu
feng_you_ying_li2 小时前
linux之环境变量
linux·运维·服务器