如何更新 Linux 的符號鏈接
UNIX 和 Linux 用戶發(fā)現(xiàn)鏈接有很多用途,特別是符號鏈接。我喜歡使用符號鏈接的一種方式是管理各種 IT 設(shè)備的配置備份。
我有一個目錄結(jié)構(gòu),用來存放我的文檔、更新及網(wǎng)絡(luò)上其他和計算機和設(shè)備有關(guān)的文件。設(shè)備可以包括路由器、接入點、NAS 服務(wù)器和筆記本電腦,通常有不同的品牌和版本。配置備份本身可能在目錄樹的深處,例如 /home/alan/Documents/network/device/NetgearRL5000/config。
為了簡化備份過程,我在主目錄中有一個名為 Configuration 的目錄。我使用這個目錄的符號鏈接來指向特定的設(shè)備目錄:
- :~/Configuration/ $ ls -F1
- Router@
- Accesspoint@
- NAS@
注意:ls 命令的 -F 選項在每個文件名上附加特殊字符以表示其類型。如上所示,@ 符號表示這些是鏈接。
創(chuàng)建一個鏈接
符號鏈接 Router 指向我的 Netgear RL5000 的 config 目錄。創(chuàng)建它的命令是 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
- ...
這樣做的好處是,當對這個設(shè)備進行維護時,我只需進入 ~/Configuration/Router。
如果我決定用一個新的型號替換這個路由器,使用符號鏈接的第二個好處就很明顯了。我可能會把舊的路由器改成一個接入點。因此,它的目錄并沒有被刪除。相反,我有一個新的目錄,對應(yīng)于新的路由器,也許是華碩 DF-3760。我創(chuàng)建這個目錄并確認它的存在:
- $ mkdir -p ~/Documents/network/device/ASUSDF-3760/config
- :~/Documents/network/device/ $ ls
- NetgearRL5000
- ASUSDF-3760
- NFSBox
- ...
另一個例子是,如果你的辦公室里有幾個接入點。你可以使用符號鏈接在邏輯上代表每一個,用一個通用的名字,如 ap1,ap2,等等,或者你可以使用描述性的詞語,如 ap_floor2,ap_floor3,等等。這樣,當物理設(shè)備隨時間變化時,你不必持續(xù)更新任何可能管理它們的進程,因為它們是在處理鏈接而不是實際的設(shè)備目錄。
更新一個鏈接
由于我的主路由器已經(jīng)改變,我想讓路由器的符號鏈接指向它的目錄。我可以使用 rm 和 ln 命令來刪除和創(chuàng)建一個新的符號鏈接,但是有一種方法可以只用 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
根據(jù)手冊頁,這些選項如下:
- -v、--verbose:打印每個鏈接文件的名稱
- -f、--force:刪除目標文件(有必要,因為已經(jīng)存在一個鏈接)
- -n、--no-dereference:如果鏈接名是一個目錄的符號鏈接,就把它當作一個正常的文件
- -s、--symbolic:制作符號鏈接而不是硬鏈接
總結(jié)
鏈接是 UNIX 和 Linux 文件系統(tǒng)中最強大的功能之一。其他操作系統(tǒng)也曾試圖模仿這種能力,但由于他們的文件系統(tǒng)缺乏基本的鏈接設(shè)計,這些系統(tǒng)從來沒有工作得那么好,也沒有那么可用。
上面的演示只是利用鏈接在生活生產(chǎn)環(huán)境中無縫瀏覽不斷變化的目錄結(jié)構(gòu)的眾多可能性中的一種。鏈接提供了一個永遠不會長期靜態(tài)的組織所需的靈活性。