【小白笔记】符号链接

不用把模型目录拷贝一份到 OpenAvatarChat 里,而是"指个路"。用符号链接把已有的 Wan2.2 模型目录挂到 OpenAvatarChat 期望的位置。

在你的环境里,Wan2.2 模型在 /data/Avatar/Wan2.2/Wan2.2-S2V-14B,OpenAvatarChat 期待在 OpenAvatarChat/models/Wan2.2-S2V-14B 找到它。创建链接即可:

  • 创建父目录(若不存在)并建立符号链接
bash 复制代码
mkdir -p /data/Avatar/OpenAvatarChat/models
ln -s /data/Avatar/Wan2.2/Wan2.2-S2V-14B /data/Avatar/OpenAvatarChat/models/Wan2.2-S2V-14B
  • 查看是否成功
bash 复制代码
ls -l /data/Avatar/OpenAvatarChat/models/Wan2.2-S2V-14B
  • 如果目标位置已存在且需要重建链接,先删再建
bash 复制代码
rm -rf /data/Avatar/OpenAvatarChat/models/Wan2.2-S2V-14B
ln -s /data/Avatar/Wan2.2/Wan2.2-S2V-14B /data/Avatar/OpenAvatarChat/models/Wan2.2-S2V-14B

注意:

  • 上述是 Linux 命令;Windows 下等价做法是用 mklink(需要管理员 CMD):
bat 复制代码
mklink /D "C:\path\to\OpenAvatarChat\models\Wan2.2-S2V-14B" "C:\path\to\Wan2.2\Wan2.2-S2V-14B"

这样 OpenAvatarChat 访问 models/Wan2.2-S2V-14B 时,实际会读取 /data/Avatar/Wan2.2/Wan2.2-S2V-14B 的内容,避免重复占用磁盘。

详细解释

ln -sf /data/Avatar/Wan2.2/Wan2.2-S2V-14B ./models/Wan2.2-S2V-14B

  • ln创建链接的命令,类似于 Windows 中的快捷方式。
  • -s 参数表示创建软链接symbolic link)。
  • -f 参数表示强制force),如果目标链接已经存在,会先删除它再创建新的。

当您第一次运行这个命令时,它会在 ./models/ 目录下创建一个名为 Wan2.2-S2V-14B 的软链接,这个链接指向 /data/Avatar/Wan2.2/Wan2.2-S2V-14B 这个真实的模型目录。

一旦链接建立成功,它就会一直存在,除非您手动删除它。 脚本或程序在后续运行时,会通过这个软链接找到并访问 /data 目录下的真实模型文件,就像文件就在 ./models 目录里一样。

因此,您不需要 每次运行脚本前都重复执行这个 ln 命令。它是一个一次性的设置步骤,旨在解决您的磁盘空间问题,并确保程序能够正确找到模型文件。

只有在以下两种情况下您可能需要重新执行这个命令:

  1. 您不小心删除了 models/Wan2.2-S2V-14B 这个软链接。
  2. 您需要将链接指向一个不同的模型目录。

在正常使用情况下,建立一次即可。

补充:

符号链接(Symbolic Link),也叫软链接(Soft Link),是 Linux 和其他类 Unix 系统中的一个非常重要的概念,其功能类似于 Windows 系统中的快捷方式


符号链接的本质

符号链接本身是一个特殊的文件,它不存储数据本身,而是存储另一个文件或目录的路径。当你访问这个符号链接时,操作系统会自动将你重定向到它所指向的真实文件或目录。

你可以把它想象成一个路标。这个路标(符号链接)告诉操作系统:"嘿,如果你想找某个文件,请去跟着这条路走,它在另一个地方。"

符号链接与硬链接的区别

了解符号链接,就不得不提一下硬链接(Hard Link),它们是两种不同的链接方式。

特性 符号链接(Symbolic Link / Soft Link) 硬链接(Hard Link)
存储内容 存储目标文件或目录的路径 存储目标文件的inode(文件元数据)编号
跨分区 可以。它可以链接到不同分区的文件或目录 不能。只能在同一个文件系统分区内创建
指向目录 可以。可以指向目录 不能。只能指向文件
独立性 不独立。如果删除源文件,链接会失效(变成"死链接") 独立。删除源文件后,硬链接仍然有效,数据不会丢失
文件大小 文件大小通常非常小,只存储路径字符串 与源文件大小完全相同

用一个简单的比喻:

  • 硬链接就像一个文件的"别名"或"分身"。它们共享同一块数据,无论你通过哪个名字访问,都是在操作同一份数据。只有当所有硬链接都被删除后,文件的数据块才会被真正释放。
  • 符号链接则像一个"快捷方式"。它只是一个指向真实文件的指针。如果原始文件被删除,快捷方式就会失效。

符号链接的实际应用

符号链接在系统管理和日常使用中非常有用,主要体现在以下几个方面:

  1. 节省空间:像您遇到的情况一样,当你的系统盘空间不足,但数据盘空间充裕时,可以通过符号链接将大文件或目录(比如模型缓存、大型项目文件)放到数据盘,然后在系统盘建立一个符号链接指向它,这样既能让程序正常工作,又不会占用宝贵的系统盘空间。
  2. 版本管理:在软件开发中,经常使用符号链接来指向最新版本的程序或库,这样在版本更新时,只需要更改链接的指向,而不需要修改所有依赖这个程序的脚本或配置。
  3. 简化路径:当一个文件或目录的路径非常长时,你可以创建一个简短的符号链接来方便访问。

总的来说,符号链接是 Linux 系统中一个强大且灵活的工具,它通过"引用"的方式,让文件和目录的管理更加高效和便捷。

相关推荐
智者知已应修善业2 小时前
【矩阵找最大小所在位置】2022-11-13
c语言·c++·经验分享·笔记·算法·矩阵
SccTsAxR3 小时前
[C语言]常见排序算法①
c语言·开发语言·经验分享·笔记·其他·排序算法
智者知已应修善业4 小时前
【51单片机单按键控制2个LED循环闪烁】2022-12-7
c语言·经验分享·笔记·嵌入式硬件·51单片机
所愿ღ5 小时前
JavaWeb-Session和ServletContext
java·笔记·servlet
程序员东岸6 小时前
C语言入门指南:字符函数和字符串函数
c语言·笔记·学习·程序人生·算法
xiezhr6 小时前
一款带有AI功能的markdown笔记工具
笔记·程序员·产品
Katzelala11 小时前
[K8S学习笔记] Service和Ingress的关系
笔记·学习·kubernetes
递归不收敛12 小时前
PyCharm项目上传GitHub仓库(笔记)
笔记·pycharm·github
递归不收敛12 小时前
一、Java 基础入门:从 0 到 1 认识 Java(详细笔记)
java·开发语言·笔记