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
...
另一个例子可能是,如果您的办公室中有多个接入点。您可以使用符号链接以逻辑方式表示每个接入点,可以使用通用名称,例如 ap1
、ap2
等,或者您可以使用描述性词语,例如 ap_floor2
、ap_floor3
等。这样,随着物理设备随时间推移而变化,您不必持续更新任何可能正在管理它们的进程,因为它们正在寻址链接而不是实际的设备目录。
更新链接
由于我的主路由器已更改,我希望路由器的符号链接指向其目录。我可以使用 rm
和 ln
命令删除并创建一个新的符号链接,但是有一种方法可以使用 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 那样好用或可用。
上面的演示只是利用链接在不断变化的生产环境中无缝导航不断变化的目录结构的一种可能性。链接为永远不会长期静态的组织提供了所需的灵活性。
2 条评论