【小白笔记】符号链接
不用把模型目录拷贝一份到 OpenAvatarChat 里,而是“指个路”。用符号链接把已有的 Wan2.2 模型目录挂到 OpenAvatarChat 期望的位置。
在你的环境里,Wan2.2 模型在 /data/Avatar/Wan2.2/Wan2.2-S2V-14B,OpenAvatarChat 期待在 OpenAvatarChat/models/Wan2.2-S2V-14B 找到它。创建链接即可:
- 创建父目录(若不存在)并建立符号链接
mkdir -p /data/Avatar/OpenAvatarChat/models
ln -s /data/Avatar/Wan2.2/Wan2.2-S2V-14B /data/Avatar/OpenAvatarChat/models/Wan2.2-S2V-14B
- 查看是否成功
ls -l /data/Avatar/OpenAvatarChat/models/Wan2.2-S2V-14B
- 如果目标位置已存在且需要重建链接,先删再建
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):
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
命令。它是一个一次性的设置步骤,旨在解决您的磁盘空间问题,并确保程序能够正确找到模型文件。
只有在以下两种情况下您可能需要重新执行这个命令:
- 您不小心删除了
models/Wan2.2-S2V-14B
这个软链接。 - 您需要将链接指向一个不同的模型目录。
在正常使用情况下,建立一次即可。
补充:
符号链接(Symbolic Link),也叫软链接(Soft Link),是 Linux 和其他类 Unix 系统中的一个非常重要的概念,其功能类似于 Windows 系统中的快捷方式。
符号链接的本质
符号链接本身是一个特殊的文件,它不存储数据本身,而是存储另一个文件或目录的路径。当你访问这个符号链接时,操作系统会自动将你重定向到它所指向的真实文件或目录。
你可以把它想象成一个路标。这个路标(符号链接)告诉操作系统:“嘿,如果你想找某个文件,请去跟着这条路走,它在另一个地方。”
符号链接与硬链接的区别
了解符号链接,就不得不提一下硬链接(Hard Link),它们是两种不同的链接方式。
特性 | 符号链接(Symbolic Link / Soft Link) | 硬链接(Hard Link) |
---|---|---|
存储内容 | 存储目标文件或目录的路径 | 存储目标文件的inode(文件元数据)编号 |
跨分区 | 可以。它可以链接到不同分区的文件或目录 | 不能。只能在同一个文件系统分区内创建 |
指向目录 | 可以。可以指向目录 | 不能。只能指向文件 |
独立性 | 不独立。如果删除源文件,链接会失效(变成“死链接”) | 独立。删除源文件后,硬链接仍然有效,数据不会丢失 |
文件大小 | 文件大小通常非常小,只存储路径字符串 | 与源文件大小完全相同 |
用一个简单的比喻:
- 硬链接就像一个文件的“别名”或“分身”。它们共享同一块数据,无论你通过哪个名字访问,都是在操作同一份数据。只有当所有硬链接都被删除后,文件的数据块才会被真正释放。
- 符号链接则像一个“快捷方式”。它只是一个指向真实文件的指针。如果原始文件被删除,快捷方式就会失效。
符号链接的实际应用
符号链接在系统管理和日常使用中非常有用,主要体现在以下几个方面:
- 节省空间:像您遇到的情况一样,当你的系统盘空间不足,但数据盘空间充裕时,可以通过符号链接将大文件或目录(比如模型缓存、大型项目文件)放到数据盘,然后在系统盘建立一个符号链接指向它,这样既能让程序正常工作,又不会占用宝贵的系统盘空间。
- 版本管理:在软件开发中,经常使用符号链接来指向最新版本的程序或库,这样在版本更新时,只需要更改链接的指向,而不需要修改所有依赖这个程序的脚本或配置。
- 简化路径:当一个文件或目录的路径非常长时,你可以创建一个简短的符号链接来方便访问。
总的来说,符号链接是 Linux 系统中一个强大且灵活的工具,它通过“引用”的方式,让文件和目录的管理更加高效和便捷。