參考博客: https://www.cnblogs.com/fengdejiyixx/p/10821820.html https://www.runoob.com/linux/linux comm ln.html https://www.cnblogs.com/crazylqy/p/5821105. ...
參考博客:
https://www.cnblogs.com/fengdejiyixx/p/10821820.html
https://www.runoob.com/linux/linux-comm-ln.html
https://www.cnblogs.com/crazylqy/p/5821105.html
需知:
當劃分磁碟分區並格式化的時候,整個分區會被劃分為兩個部分,即inode區和data block(實際數據放置在數據區域中)這個inode即是(目錄、檔案)文件在一個文件系統中的唯一標識,需要訪問這個文件的時候必須先找到並讀取這個 文件的 inode。 Inode 裡面存儲了文件的很多重要參數,其中唯一標識稱作 Inumber, 其他信息還有創建時間、修改時間 、文件大小、屬主、歸屬的用戶組、讀寫許可權、數據所在block號等信息。
硬鏈接(hard link):
A是B的硬鏈接(A和B都是文件名),則A的目錄項中的inode節點號與B的目錄項中的inode節點號相同,即一個inode節點對應兩個不同的文件名,兩個文件名指向同一個文件,A和B對文件系統來說是完全平等的。如果刪除了其中一個,對另外一個沒有影響。每增加一個文件名,inode節點上的鏈接數增加一,每刪除一個對應的文件名,inode節點上的鏈接數減一,直到為0,inode節點和對應的數據塊被回收。註:文件和文件名是不同的東西,rm A刪除的只是A這個文件名,而A對應的數據塊(文件)只有在inode節點鏈接數減少為0的時候才會被系統回收。
軟鏈接(soft link):
A是B的軟鏈接(A和B都是文件名),A的目錄項中的inode節點號與B的目錄項中的inode節點號不相同,A和B指向的是兩個不同的inode,繼而指向兩塊不同的數據塊。但是A的數據塊中存放的只是B的路徑名(可以根據這個找到B的目錄項)。A和B之間是“主從”關係,如果B被刪除了,A仍然存在(因為兩個是不同的文件),但指向的是一個無效的鏈接。
創建方式:
1.軟鏈接(符號鏈接) ln -s 目標文件 鏈接名
2.硬鏈接 (實體鏈接)ln 目標文件 鏈接名
主要參數:
-b 刪除,覆蓋以前建立的鏈接
-d 允許超級用戶製作目錄的硬鏈接
-f 強制執行
-i 交互模式,文件存在則提示用戶是否覆蓋
-n 把符號鏈接視為一般目錄
-s 軟鏈接(符號鏈接)
-v 顯示詳細的處理過程
區別:
軟鏈接:
1.軟鏈接,以路徑的形式存在,類似於Windows操作系統中的快捷方式
2.軟鏈接可以跨文件系統
3.軟鏈接可以對一個不存在的文件名進行鏈接
4.軟鏈接可以對目錄進行鏈接
5.軟鏈接原文件/鏈接文件擁有不同的inode號,表明他們是兩個不同的文件
6.當源文件目錄改變後,軟連接訪問不到
硬鏈接:
1.硬鏈接,以文件副本的形式存在,但不占用實際空間
2.不允許給目錄創建硬鏈接(可以通過參數添加但僅限root用戶)
3.硬鏈接只有在同一個文件系統中才能創建
4.不能對不存在的文件創建硬鏈接
5.硬鏈接原文件/鏈接文件公用一個inode號,說明他們是同一個文件
6.當源文件目錄改變後,硬連接可以訪問
使用場景:
軟連接:
1.便於文件的管理,比如把一個複雜路徑下的文件鏈接到一個簡單路徑下方便用戶訪問。
2.節省空間解決空間不足問題,某個文件文件系統空間已經用完了,但是現在必須在該文件系統下創建一個新的目錄
並存儲大量的文件,那麼可以把另一個剩餘空間較多的文件系統中的目錄鏈接到該文件系統中。
硬鏈接:
硬鏈接的作用之一是允許一個文件擁有多個有效路徑名,比如備份文件,快照。