mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-02-25 00:50:15 +08:00
parent
d94ccda950
commit
6a332096ee
@ -3,70 +3,63 @@
|
||||
[#]: author: "Alan Formy-Duval https://opensource.com/users/alanfdoss"
|
||||
[#]: collector: "lujun9972"
|
||||
[#]: translator: "geekpi"
|
||||
[#]: reviewer: " "
|
||||
[#]: publisher: " "
|
||||
[#]: url: " "
|
||||
[#]: reviewer: "wxy"
|
||||
[#]: publisher: "wxy"
|
||||
[#]: url: "https://linux.cn/article-13981-1.html"
|
||||
|
||||
如何更新 Linux 的符号链接
|
||||
======
|
||||
链接一直是 UNIX 文件系统的一个独特的高级功能。
|
||||
![Links][1]
|
||||
|
||||
> 链接一直是 UNIX 文件系统的一个独特的高级功能。
|
||||
|
||||

|
||||
|
||||
UNIX 和 Linux 用户发现链接有很多用途,特别是符号链接。我喜欢使用符号链接的一种方式是管理各种 IT 设备的配置备份。
|
||||
|
||||
我有一个目录结构,用来存放我网络上的计算机和设备的文档、更新和其他文件有关的一切。设备可以包括路由器、接入点、NAS 服务器和笔记本电脑,通常有不同的品牌和版本。配置备份本身可能在目录树的深处,例如 `/home/alan/Documents/network/device/NetgearRL5000/config`。
|
||||
我有一个目录结构,用来存放我的文档、更新及网络上其他和计算机和设备有关的文件。设备可以包括路由器、接入点、NAS 服务器和笔记本电脑,通常有不同的品牌和版本。配置备份本身可能在目录树的深处,例如 `/home/alan/Documents/network/device/NetgearRL5000/config`。
|
||||
|
||||
为了简化备份过程,我在主目录中有一个名为 `Configuration` 的目录。我使用这个目录的符号链接来指向特定的设备目录:
|
||||
|
||||
|
||||
```
|
||||
|
||||
|
||||
:~/Configuration/ $ ls -F1
|
||||
Router@
|
||||
Accesspoint@
|
||||
NAS@
|
||||
|
||||
```
|
||||
|
||||
**注意**:`ls` 命令的 `-F` 选项在每个文件名上附加特殊字符以表示其类型。如上所示,`@` 符号表示这些是链接。
|
||||
|
||||
### 创建一个链接
|
||||
|
||||
符号链接 **Router** 指向我的 Netgear RL5000 的 `config` 目录。创建它的命令是 `ln -s`:
|
||||
|
||||
符号链接 `Router` 指向我的 Netgear RL5000 的 `config` 目录。创建它的命令是 `ln -s`:
|
||||
|
||||
```
|
||||
`$ ln -s /home/alan/Documents/network/device/NetgearRL5000/config Router`
|
||||
$ 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
|
||||
Router -> /home/alan/Documents/network/device/NetgearRL5000/config
|
||||
NAS -> /home/alan/Documents/network/device/NFSBox/config
|
||||
...
|
||||
|
||||
```
|
||||
|
||||
这样做的好处是,当对这个设备进行维护时,我只需进入 `~/Configuration/Router`。
|
||||
|
||||
如果我决定用一个新的型号替换这个路由器,使用符号链接的第二个好处就很明显了。我可能会把旧的路由器改成一个接入点。因此,它的目录并没有被删除。相反,我有一个新的目录,对应于新的路由器,也许是华硕 DF-3760。我创建这个目录并确认它的存在:
|
||||
|
||||
```
|
||||
$ mkdir -p ~/Documents/network/device/ASUSDF-3760/config
|
||||
```
|
||||
|
||||
```
|
||||
`$ mkdir -p ~/Documents/network/device/ASUSDF-3760/config`[/code] [code]
|
||||
|
||||
:~/Documents/network/device/ $ ls
|
||||
NetgearRL5000
|
||||
ASUSDF-3760
|
||||
NFSBox
|
||||
...
|
||||
|
||||
```
|
||||
|
||||
另一个例子是,如果你的办公室里有几个接入点。你可以使用符号链接在逻辑上代表每一个,用一个通用的名字,如 `ap1`,`ap2`,等等,或者你可以使用描述性的词语,如 `ap_floor2`,`ap_floor3`,等等。这样,当物理设备随时间变化时,你不必持续更新任何可能管理它们的进程,因为它们是在处理链接而不是实际的设备目录。
|
||||
@ -75,35 +68,20 @@ NFSBox
|
||||
|
||||
由于我的主路由器已经改变,我想让路由器的符号链接指向它的目录。我可以使用 `rm` 和 `ln` 命令来删除和创建一个新的符号链接,但是有一种方法可以只用 `ln` 命令和几个选项就可以一步完成:
|
||||
|
||||
|
||||
```
|
||||
|
||||
|
||||
:~/Configuration/ $ ln -vfns ~/Documents/network/device/ASUSDF-3760/config/ Router
|
||||
'Router' -> '/home/alan/Documents/network/device/ASUSDF-3760/config/'
|
||||
'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
|
||||
|
||||
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**
|
||||
|
||||
制作符号链接而不是硬链接
|
||||
- `-v`、`--verbose`:打印每个链接文件的名称
|
||||
- `-f`、`--force`:删除目标文件(有必要,因为已经存在一个链接)
|
||||
- `-n`、`--no-dereference`:如果链接名是一个目录的符号链接,就把它当作一个正常的文件
|
||||
- `-s`、`--symbolic`:制作符号链接而不是硬链接
|
||||
|
||||
### 总结
|
||||
|
||||
@ -118,7 +96,7 @@ via: https://opensource.com/article/21/11/update-linux-file-system-link
|
||||
作者:[Alan Formy-Duval][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
Loading…
Reference in New Issue
Block a user