shell編程之軟硬連接ln

在 Windows 裏面咱們常常經過快捷方式來建立連接以方便咱們使用電腦。而 Linux 中有兩種方式建立連接,分別爲軟連接和硬連接。下面咱們就來詳細說下兩者的區別。node

定義

lnlink file 的簡稱)是 GNU 核心工具包中的基本工具。該命令是爲某個文件在另一個位置創建一個同步連接。當咱們須要在不一樣的目錄用到相同的文件時,咱們不須要在每個須要的目錄下都放一個必須相同的文件,此時只需用 ln 建立對應文件的連接,沒必要重複的佔用磁盤空間。git

命令格式

# 硬連接(source只能是文件)
ln source target
# 軟連接(source能夠是文件也能夠是目錄)
ln -s source target

軟連接

軟連接 symbolic link 跟 Windows 裏面的快捷方式等價。它的內容是指向另外一個文件的位置。因此能夠建立某個目錄的軟連接,也能夠對一個不存在的文件進行連接。除此以外,它能夠跨文件系統。這三點硬連接都沒法實現。github

硬連接

硬連接 hard link 能夠理解爲文件的別名,並且別名能夠有多個。bash

原理

對於 Linux 而言,文件的結構與 Windows 有點相似,由文件名,inode(相似於 Windows 下的 FCB 文件控制塊,保存文件的一些信息)和數據組成。好比建立 origin 文件,會獲得下面的信息。微信

origin

注意 Inode 和硬連接,下面建立 origin 的硬連接 hardlink。 hardlink工具

比對發現,建立硬連接的文件 hardlink 與原文件 origin 之間除了名稱不一樣以外其餘徹底相同,就像同一我的它有個正式的名稱也可能會有小名。它們的數據顯然徹底同樣。url

接下來,咱們建立 origin 的軟連接 softlink。 softlinkspa

對比發現,origin 和 softlink 是徹底不一樣的文件,有着不一樣的 size,不一樣的塊,不一樣的 Inode,不一樣的 type。惟一的聯繫是 softlink 文件指向 origin 文件(有點文件指針的味道)。.net

用例

刪除源文件對軟硬連接的影響

rmorigin

由上圖能夠看出 hardlink 中硬連接的個數少了一個,而 softlink 仍是安然無恙的存在着。接着咱們經過兩個連接來打開文件。 linkshow3d

由上圖發現,hardlink 依舊能打開文件,而軟連接卻沒法查看原文件。

參考文獻

  1. GUN核心工具包
  2. 維基百科ln
  3. ln源碼

若是該文章對您產生了幫助,或者您對技術文章感興趣,能夠關注微信公衆號: 技術茶話會, 可以第一時間收到相關的技術文章,謝謝!

技術茶話會


本篇文章由一文多發平臺ArtiPub自動發佈
相關文章
相關標籤/搜索