如何更新 Linux 符号链接

链接一直是 UNIX 文件系统的一个独特的先进功能。
52 位读者喜欢这篇文章。
Links

Paul Lewin。由 Opensource.com 修改。CC BY-SA 2.0

UNIX 和 Linux 用户发现链接有很多用途,尤其是符号链接。我喜欢使用符号链接的一种方式是管理各种 IT 设备的配置备份。

我有一个目录结构,用于存放与网络上的计算机和设备相关的文档、更新和其他所有文件。设备可以包括路由器、接入点、NAS 服务器和笔记本电脑,通常是不同的品牌和版本。配置备份本身可能位于目录树的深处,例如 /home/alan/Documents/network/device/NetgearRL5000/config

为了简化备份过程,我在我的主目录中创建了一个名为 Configuration 的目录。我使用从这个目录到特定设备目录的符号链接

:~/Configuration/ $ ls -F1
Router@
Accesspoint@
NAS@

注意ls 命令的 -F 选项会在每个文件名后附加特殊字符以表示其类型。如上所示,@ 符号表示这些是链接。

创建链接

符号链接 Router 指向我的 Netgear RL5000 的 config 目录。创建它的命令是 ln -s:

$ ln -s /home/alan/Documents/network/device/NetgearRL5000/config Router

然后,查看并使用 ls -l: 确认

:~/Configuration/ $ ls -l
Router -> /home/alan/Documents/network/device/NetgearRL5000/config
NAS -> /home/alan/Documents/network/device/NFSBox/config
...

这样做的好处是,当对该设备进行维护时,我只需浏览到 ~/Configuration/Router

如果我决定用新型号替换此路由器,使用符号链接的第二个优势就变得显而易见了。我可能会将旧路由器重新分配为接入点。因此,它的目录不会被删除。相反,我有一个与新路由器对应的新目录,可能是一个 ASUS DF-3760。我创建目录并确认其存在

$ mkdir -p ~/Documents/network/device/ASUSDF-3760/config
:~/Documents/network/device/ $ ls
NetgearRL5000
ASUSDF-3760
NFSBox
...

另一个例子可能是,如果您的办公室中有多个接入点。您可以使用符号链接以逻辑方式表示每个接入点,可以使用通用名称,例如 ap1ap2 等,或者您可以使用描述性词语,例如 ap_floor2ap_floor3 等。这样,随着物理设备随时间推移而变化,您不必持续更新任何可能正在管理它们的进程,因为它们正在寻址链接而不是实际的设备目录。

更新链接

由于我的主路由器已更改,我希望路由器的符号链接指向其目录。我可以使用 rmln 命令删除并创建一个新的符号链接,但是有一种方法可以使用 ln 命令和一个选项一步完成此操作

:~/Configuration/ $ ln -vfns ~/Documents/network/device/ASUSDF-3760/config/ Router
'Router' -> '/home/alan/Documents/network/device/ASUSDF-3760/config/'
:~/Configuration/ $ ls -l
Router -> /home/alan/Documents/network/device/ASUSDF-3760/config
NAS -> /home/alan/Documents/network/device/NFSBox/config

根据手册页,选项如下

-v, --verbose

打印每个链接文件的名称

-f, --force

删除目标文件(由于链接已存在,因此是必要的)

-n, --no-dereference

如果 LINK_NAME 是指向目录的符号链接,则将其视为普通文件

-s, --symbolic

创建符号链接而不是硬链接

总结

链接是 UNIX 和 Linux 文件系统最强大的功能之一。其他操作系统也尝试模仿此功能,但由于其文件系统中缺少基本的链接设计,因此这些功能从未像 UNIX 和 Linux 那样好用或可用。

上面的演示只是利用链接在不断变化的生产环境中无缝导航不断变化的目录结构的一种可能性。链接为永远不会长期静态的组织提供了所需的灵活性。

下一步阅读
标签
Alan Formy-Duval Opensource.com Correspondent
Alan 拥有 20 年的 IT 经验,主要在政府和金融部门。他最初是一名增值经销商,之后转行从事系统工程。Alan 的背景是高可用性集群应用程序。他在 Oracle Press/McGraw Hill 的《Oracle Solaris 11 系统管理》一书中撰写了“用户和组”以及“Apache 和 Web 堆栈”章节。

2 条评论

我从 1993 年开始使用 Linux,直到看到您的文章才意识到,您可以更改链接而无需先删除它。我一直使用“rm”,然后再使用另一个“ln -s”

感谢分享!

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.