在 Windows 裏面咱們常常經過快捷方式來建立連接以方便咱們使用電腦。而 Linux 中有兩種方式建立連接,分別爲軟連接和硬連接。下面咱們就來詳細說下兩者的區別。node
定義
ln
(link 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 文件,會獲得下面的信息。微信
注意 Inode 和硬連接,下面建立 origin 的硬連接 hardlink。 工具
比對發現,建立硬連接的文件 hardlink 與原文件 origin 之間除了名稱不一樣以外其餘徹底相同,就像同一我的它有個正式的名稱也可能會有小名。它們的數據顯然徹底同樣。url
接下來,咱們建立 origin 的軟連接 softlink。 spa
對比發現,origin 和 softlink 是徹底不一樣的文件,有着不一樣的 size,不一樣的塊,不一樣的 Inode,不一樣的 type。惟一的聯繫是 softlink 文件指向 origin 文件(有點文件指針的味道)。.net
用例
刪除源文件對軟硬連接的影響
由上圖能夠看出 hardlink 中硬連接的個數少了一個,而 softlink 仍是安然無恙的存在着。接着咱們經過兩個連接來打開文件。 3d
由上圖發現,hardlink 依舊能打開文件,而軟連接卻沒法查看原文件。
參考文獻
若是該文章對您產生了幫助,或者您對技術文章感興趣,能夠關注微信公衆號: 技術茶話會, 可以第一時間收到相關的技術文章,謝謝!
本篇文章由一文多發平臺ArtiPub自動發佈