Linux 硬鏈接 & 符號鏈接 & ln [options] source... [target]

索引結構

文件索引(文件名、路徑等信息) -> Inode -|-> 數據塊

Inode

每個文件擁有唯一的 Inode 索引結點,作為文件存在的唯一標記,存儲各項文件屬性、權限,記錄文件數據的物理存儲地址。
Inode 編號僅保證在當前文件系統下唯一,掛載多個文件系統會出現 Inode 編號重復現象。

硬鏈接

每個硬鏈接都是一個指向某個文件 Inode 的文件索引別名,新增的硬鏈接會映射源 Inode 的文件屬性信息和 Inode 編號,并將 Inode 的引用數加一。
硬鏈接與源文件地位相等,不受源文件路徑變化影響。
訪問硬鏈接需要源文件訪問權限,但不映射源文件及其他硬鏈接的目錄路徑。
當文件的引用數為零時,系統將自動刪除該文件 Inode 及對應的文件數據。
目錄不允許創建硬鏈接(有可能產生環形目錄樹結構,無法刪除)
硬鏈接依賴于特定文件系統,不能跨文件系統建立鏈接。

符號鏈接(symbolic link, 軟鏈接)

符號鏈接是一個獨立文件,擁有獨立 Inode 編號,文件內容為目標文件、目錄的地址,新增符號鏈接不會導致源文件 Inode 引用數增加,相當于 Windows 的快捷方式。
符號鏈接允許跨文件系統、跨網絡獨立存在,不依賴于特定文件系統支持。

理解 Linux 的硬鏈接與軟鏈接 - IBM


ln [options] source... [target]

為源文件創建一個硬鏈接或符號鏈接文件

options

-s 創建軟鏈接(默認創建硬鏈接)
-F 強制模式,如果 target 已作為目錄形式存在,則刪除該文件夾,需要與 -f 或 -i 搭配使用,判斷內部文件的刪除方式(不指定時默認使用 -f )
-f 強制模式,如果 target 已作為文件形式存在(非目錄),則清除該文件
-i 交互模式,target 文件已存在時執行是否覆蓋詢問
-h/-n 如果 target 已作為軟鏈接(目錄)形式存在,則不進入,通常與 -f 配合使用

target

可選的新建鏈接文件命名,也可指定一個目錄作為鏈接文件的存儲位置(不指定命名時,繼承原始文件命名)
當指定 source 源文件多于一個時,target 需要指定為一個用于存放所有鏈接文件的目錄

軟鏈接相關命令

open 打開鏈接目標文件
stat 顯示鏈接目標文件屬性
lstat 顯示軟鏈接文件本身的屬性
readlink 讀取軟鏈接本身的內容

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容