创建旧式“慢”符号链接

occ*_*lus 5 symlink

ln -s创建“快速”符号链接。如果您将它们(和它们的目标)复制到例如光学介质,这些就会损坏。我相信旧式的“慢”符号链接会起作用,但我该如何创建它们?我找不到ln标志或其他命令。

一些上下文信息,来自符号链接维基百科页面

符号链接的早期实现将符号链接信息作为数据存储在常规文件中。该文件包含对链接目标的文本引用,文件模式位指示文件的类型是符号链接。

这种方法很慢,而且在小型系统上对磁盘空间的使用效率很低。一项称为快速符号链接的改进允许在用于在磁盘(inode)上存储文件信息的数据结构中存储目标路径。该空间通常存储分配给文件的磁盘块地址列表。因此,可以快速访问具有短目标路径的符号链接。如果目标路径超过可用的 inode 空间,具有快速符号链接的系统通常会回退到使用原始方法。原始样式追溯称为慢速符号链接。它还用于与其他或旧版本操作系统的磁盘兼容性。

Ste*_*itt 16

没有办法告诉ln创建“快”或“慢”符号链接,文件系统决定了它如何存储符号链接。

处理光学介质上的符号链接表示取决于处理转换的程序,或者提供对介质的访问的文件系统驱动程序,而不取决于源文件系统。例如,mkisofs可以使用 Rock Ridge 扩展名或TRANS.TBL文件来表示符号链接。它还可以处理硬链接。


小智 5

您关于“快”和“慢”符号链接行为不同的假设是不正确的。两者都只是将目标路径存储为文本。这里的优化是使用目录条目中的空间来存储该文本(如果它足够短)。如果路径太长,文件系统将透明地使用另一个块来存储路径,就像使用另一个块来存储文件的内容一样。这比较慢,因为它需要从磁盘读取两次,但实际上您很少会注意到其中的差异。如果您有 SSD 或 NVMe 驱动器,则尤其如此。

您可以改为使用符号链接的相对路径。当您将文件复制到另一个磁盘时,只要源和目标彼此具有相同的关系,符号链接就会继续按预期工作。作为奖励,相对路径可能比绝对路径短,因此更有可能适合目录条目。