告别重复下载:Stable Diffusion 多前端模型共享与软硬链接实操

发布时间:2026/10/21 13:41:39
告别重复下载:Stable Diffusion 多前端模型共享与软硬链接实操 最近整理机器的时候发现一个挺有意思的事同一个v1-5-pruned-emaonly.safetensors在硬盘里躺了三份加起来 12GB 还多。ComfyUI 一份另一个用习惯了的前端一份下载缓存里还躺着一份。固态硬盘的空间就这么被一模一样的东西白白吃掉了。这个问题其实特别常见尤其是有多套 Stable Diffusion 工具的玩家模型文件重复下载、重复存储纯属浪费。这篇内容就围绕 Stable Diffusion 与 ComfyUI 场景分享一套让多个前端共用同一个模型文件的实操方案。核心目标就是减少重复存储把v1-5-pruned-emaonly.safetensors这种动辄 3GB、4GB 的大文件从“每套工具各存一份”变成“全机只存一份”。文章会覆盖软链接、硬链接、以及 ComfyUI 原生支持的路径配置这几条路线也会把我在实际操作中踩过的坑一并写出来。适合那些硬盘空间紧张、又同时在用多个 AI 绘画工具的人参考。1. 为什么模型文件总在“重复下载”1.1 一个基础模型到底有多大以标题里的v1-5-pruned-emaonly.safetensors为例它是 Stable Diffusion 1.5 时代的经典基础模型文件。常见的 safetensors 格式、emaonly 剪枝版文件大小通常在 3GB 到 4GB 之间有些 fp16 版本会小一些大约 2GB 上下但完整版或者包含其他组件时体积会更大。这个大小对单文件来说其实不算夸张问题是架不住多个工具各存一份。ComfyUI 默认会把大模型放到ComfyUI/models/checkpoints/目录下另一个常见的 WebUI 前端则习惯放在models/Stable-diffusion/目录里。如果你还装了模型管理工具、下载缓存、或者移动硬盘里的备份那同一个文件被复制三五份非常正常。我见过有人机器上同一份 SD1.5 基础模型出现了 6 个副本总共占用近 20GB而这里面绝大多数都是冗余。1.2 占用空间只是表面问题重复存储带来两个问题第一个很直接硬盘空间被白白吃掉。第二个是隐性的你很难判断哪个副本是最新版本。有时候为了测试某个微调模型你会对基础模型文件做覆盖或重命名结果多个副本之间版本不一致加载出来的效果对不上。而且下载模型本身也费时间。一个 4GB 的文件从网盘拉下来就算速度不错也要几分钟多个工具重复下载等于反复消费带宽和时间。所以“共享一份模型文件”不只是省空间还会让本地管理更清爽。2. 共享前需要先搞清楚的几个概念2.1 三种“共享”方式的本质区别在动手之前有必要把概念理清楚否则操作时容易产生误解。常用方式有三种符号链接软链接、硬链接、以及原生路径配置。符号链接相当于创建了一个“快捷方式”指向另一个位置的真实文件或目录。删除快捷方式不影响源文件但如果源文件被移动或删除快捷方式会失效。硬链接不是快捷方式而是同一个文件的另一个名字。文件系统里多个文件名指向同一个数据块修改任何一边的内容另一边也会变因为本来就是同一份。删除其中一个名字只要还存在其他引用数据就不会丢。原生路径配置工具主动支持读取外部目录比如 ComfyUI 的extra_model_paths.yaml这算是最干净的做法连链接都不用建。这三者各有适用场景后面具体操作会分别给出用法。先记住一句话符号链接适合跨分区、目录级别共享硬链接适合同分区、单文件级别共享原生路径配置最优雅但需要工具支持。2.2 硬链接和符号链接的适用边界很多人看到硬链接能“一份空间多个入口”就想着无脑用。但硬链接有个硬性限制只能在同一个文件系统内创建。什么意思就是你的 C 盘和 D 盘是两个独立分区跨盘创建硬链接系统直接报错。这种场景就得用符号链接或者干脆用工具自带的路径配置。另外NTFS 支持硬链接和符号链接APFS 也支持常见的 ext4 同样支持。但 exFAT、FAT32 这类移动存储格式就比较受限基本只能靠文件复制。所以做方案之前先确认你放模型的那个盘是什么文件系统。2.3 硬链接占用空间的计算误区有一个地方特别容易让人困惑复制一个文件过去占用翻倍硬链接一个文件过去系统里多了一个文件名但占用空间不翻倍。查看磁盘占用时你可能会发现ls -l看到两个文件都显示 4GB但df -h显示磁盘剩余空间并没有因为多次硬链接而明显减少。这是因为硬链接共享同一个 inode 和数据块文件系统只会记录一份数据。Windows 上如果看单个文件属性同样会显示完整大小容易误以为自己没省空间其实磁盘的实际占用只有一份。理解了这一点后面看空间变化时就不会慌。3. 实操三条路线让同一份模型被多个前端共用3.1 方案一ComfyUI 原生路径共享先说我最推荐、也最稳妥的方式ComfyUI 自带的extra_model_paths.yaml配置。ComfyUI 会读取一个额外的配置文件让你把模型搜索路径扩展到任意目录。这样你既不需要移动任何原文件也不需要创建链接只需要在配置文件里加上外部目录的绝对路径ComfyUI 启动时就会自动在这些路径下扫描模型。以实际场景为例我的所有大模型都集中放在D:\SharedModels\checkpoints这个目录。想让它被 ComfyUI 识别只需要打开 ComfyUI 根目录下的extra_model_paths.yaml.example把它重命名为extra_model_paths.yaml然后按需解注释并修改comfyui: base_path: D:\SharedModels checkpoints: checkpoints loras: | loras vae: vae embeddings: embeddings如果 base_path 下还有子目录可以这样写comfyui: base_path: D:\SharedModels checkpoints: | checkpoints checkpoints2改完后重启 ComfyUI刷新节点列表加载模型时就能在列表里看到D:\SharedModels\checkpoints下的文件了。这个方式的优点是完全不动原有目录结构你甚至可以让 ComfyUI 同时扫描多个路径也不影响它自带的标准目录。注意配置文件里目前默认可能指向的是extra_model_paths.yaml.example记得把文件名后面的.example去掉否则 ComfyUI 不会读取。3.2 方案二符号链接实现跨盘共享如果你用的另一个前端不支持多路径扫描那符号链接就是跨分区、跨盘共享的主力方案。在 Windows 上管理员模式打开命令提示符使用mklink命令。比如你把模型集中移动到D:\SharedModels\checkpoints后想让某个前端的 models 目录指向它可以这样mklink /J C:\WebUI\models\Stable-diffusion D:\SharedModels\checkpoints这里的/J是创建目录联接junction比/D符号链接更稳在 Windows 上不需要额外开启开发者模式兼容性也好。如果只是给单个文件创建链接用/H创建硬链接mklink /H C:\WebUI\models\Stable-diffusion\v1-5-pruned-emaonly.safetensors D:\SharedModels\checkpoints\v1-5-pruned-emaonly.safetensors在 Linux 或 macOS 上符号链接用ln -sln -s /mnt/data/shared/checkpoints/v1-5-pruned-emaonly.safetensors ~/ComfyUI/models/checkpoints/v1-5-pruned-emaonly.safetensors软链接的思维很简单链接文件本身不是一个真正的模型文件只是指向真实文件的路标。前端加载模型时系统会顺着路标找到真实数据。缺点我也提一下如果你把源文件移走链接就变成“断链”前端会报加载失败。所以一旦用符号链接就不要随意挪动源目录。3.3 方案三硬链接让每个前端目录里都有“真文件”符号链接最大的问题是有些前端对链接文件的处理不友好或者你在网络共享目录、云同步目录中使用时链接会被同步工具误处理。这时候硬链接反而是更稳的选择。硬链接的核心是在目标目录里生成一个完整的文件条目它看起来就是普通文件任何软件都会把它当成一个真实文件来读取。但它与源文件共享磁盘上的同一份数据块因此不会额外占用空间。在 Windows 上创建硬链接mklink /H C:\ComfyUI\models\checkpoints\v1-5-pruned-emaonly.safetensors D:\SharedModels\checkpoints\v1-5-pruned-emaonly.safetensors在 Linux/macOS 上ln /data/shared/v1-5-pruned-emaonly.safetensors ~/ComfyUI/models/checkpoints/v1-5-pruned-emaonly.safetensors注意ln不带-s就是硬链接。硬链接的局限前面说过只能在同一个文件系统内使用。也就是说如果你把源文件放在 D 盘目标不能是 C 盘。但我的实际经验是大多数人的模型目录都在同一块大容量机械盘或同一块固态盘上这种情况硬链接非常合适。3.4 其他模型类型也可以一并共享大模型只是重复存储最严重的部分其他文件一样可以共享。Lora 模型、VAE、Embedding、ControlNet 这些组件不同前端同样各自存放一份。使用extra_model_paths.yaml时可以把这些类型的路径都映射到同一个中心目录。一个比较标准的共享目录结构大致是这样D:\SharedModels ├── checkpoints ├── loras ├── vae ├── embeddings └── controlnet然后每套前端只需要三个动作下载模型时统一放中心目录、配置路径映射或创建链接、定期检查有没有失效链接。这样全机只留一份文件所有工具共用省心很多。4. 从零开始一台机器让两套前端共用同一份模型4.1 现场实操记录下面用一个完整的场景走一遍流程。假设机器上有 ComfyUI也有另一套 WebUI 前端两个前端各自下载过v1-5-pruned-emaonly.safetensors现在要把它们合并成一份。第一步检查分区和文件系统。在 Linux 上用df -T查看Windows 上可以用磁盘管理或fsutil fsinfo volumeinfo。确认两个模型的当前位置在同一个物理分区上这样能用硬链接如果在不同分区就要换软链接方案。第二步统一模型文件位置。我先在 D 盘建了中心目录D:\SharedModels\checkpoints把源模型和另一个前端的模型都移动过去。移动完成后原来的两个目录里不再保留副本。第三步配置 ComfyUI。进入 ComfyUI 根目录编辑extra_model_paths.yaml加入base_path为D:\SharedModels并将 checkpoints、loras、vae 路径指向对应子目录。重启 ComfyUI打开工作流加载模型列表能看到模型正常出现。第四步配置另一个前端。因为我用的这套前端不支持多路径扫描所以我给它手动创建了目录软链接。在管理员命令行里执行mklink /J C:\WebUI\models\Stable-diffusion D:\SharedModels\checkpoints如果你的前端只需要单个模型文件也可以直接硬链接单文件mklink /H C:\WebUI\models\Stable-diffusion\v1-5-pruned-emaonly.safetensors D:\SharedModels\checkpoints\v1-5-pruned-emaonly.safetensors第五步启动两个前端分别加载模型做一个最简单的文生图测试。确认都能正常读取后再看一下磁盘空间占用。4.2 空间实测结果操作之前两个前端的模型目录里各有一份v1-5-pruned-emaonly.safetensors大约占用 7GB 左右。操作之后两个入口都指向同一个文件磁盘占用约 3.5GB省了刚好一个基础模型的体积。如果还共享了 Lora 和 VAE节省下来的空间会更明显。这个“入口多份、数据一份”的效果就是本文想要达到的核心目标。4.3 操作中的几个易错点第一个易错点符号链接创建时路径写错。链接命令里的目标路径必须是真实存在的绝对路径不能写相对路径。尤其是 Windows 上的mklink路径里如果有空格必须用英文双引号包起来。第二个易错点硬链接跨盘。很多人不理解为啥ln会报 “Invalid cross-device link”其实就是目标文件系统和源文件系统不是一个分区。这种情况别硬试改用软链接或路径配置。第三个易错点修改配置文件后没有重启。ComfyUI 的extra_model_paths.yaml不是热加载的改完必须重启进程才会生效。如果发现模型列表没变化先重启再排查。5. 常见问题排查与避坑经验5.1 模型在列表中不显示怎么办最常见的原因是配置路径不对。检查extra_model_paths.yaml里的路径是否真实存在是否写全了目录层级。其次是文件格式问题有些工具对模型文件的扩展名敏感.safetensors正常但如果你不小心把扩展名改成.ckpt工具可能识别不出来。如果用的是符号链接且链接失效可以打开链接的属性看一眼“目标”是否还存在。在 Linux 里用ls -l会看到链接末尾有- 目标路径如果目标路径变红或不存在就说明链接断了重新创建即可。5.2 硬链接一边修改另一边也变了是正常的这个特性容易让人误会。硬链接的两个名字共享数据块所以你通过 A 入口覆盖了模型文件B 入口读到的内容也会变成新文件。这是硬链接的工作机制不是 bug。好处是多个前端始终保持版本一致坏处是如果你只想让某一个前端用旧版本就别用硬链接。5.3 云同步目录下慎用符号链接如果模型目录在网盘同步盘里符号链接很容易被同步软件当作一个特殊的“快捷方式”或普通小文件处理导致另一个设备上拿到的是无效链接。我实际遇到过一次同步后链接目标在原设备上正常但在另一台机器上因为盘符不同整个链接直接失效。所以网盘同步场景优先用原生路径配置或者在每台机器上单独创建链接不要让链接文件本身参与同步。5.4 备份模型时别只复制链接文件这个点很多人踩过。如果你用符号链接方式共享模型备份时只把快捷方式拷走了源文件没拷那备份相当于白做。硬链接相对好一些因为文件内容就在原地但备份工具如果不认识硬链接也可能产生重复副本。我的做法是备份前先解除所有链接把真实文件单独拷贝一份或者在备份工具里明确选择“保留硬链接结构”。5.5 常见问题速查表问题现象可能原因解决办法ComfyUI 模型列表找不到新加的模型配置文件没生效或路径错误重命名配置文件、检查绝对路径、重启 ComfyUI创建硬链接提示跨设备源和目标在不同分区改用符号链接或移动到同一分区符号链接指向的模型加载失败源文件被移动或删除重新创建链接或恢复源文件路径修改模型文件后所有前端都变了使用了硬链接按需使用别误以为会隔离版本网盘同步后其他设备链接失效同步工具未正确处理链接改用原生路径配置或在每台设备单独创建占用空间没减少反而变大备份工具复制了链接内容单独拷贝真实文件备份时排除链接5.6 换新模型时的清理思路共享方案用久了会积攒失效链接。我就遇到过某次整理目录把旧模型文件删掉之后几个前端里留下了指向空路径的链接启动时虽然没有大问题但列表里慢慢堆了不少无效项。建议定期检查把所有链接文件列出来核对一遍源文件是否存在。Windows 上用dir /AL可以列出当前目录层的符号链接Linux 上用find -type l。把失效的清理掉目录就干净了。6. 最后再分享一点个人心得这套共享思路我实际用了大半年最明显的收益是模型目录从 80GB 降到了 45GB 左右省出来的空间足够放不少新模型。如果你同时用 ComfyUI 和另一套前端我建议优先用 ComfyUI 的extra_model_paths.yaml这个方案最接近“官方推荐”的用法。只有在前端不支持路径扩展时才考虑软链接或硬链接。如果用链接记得在自己的模型目录里建一个文本文件记录哪几个入口是链接、指向哪里。这样几个月后再回来维护时不用对着终端猜来猜去。配合定期检查和统一的命名规范模型再多也不会乱。对了还有一个小技巧给模型做硬链接之前先计算一次哈希值保存到本地。以后如果怀疑某个模型文件被意外修改过重新算一遍哈希对比一下就行。尤其当多个前端共用同一份文件时这个操作能帮你很快定位是哪一步出了问题。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询