為解決文件的共享使用,Linux系統引入了兩種鏈接:硬鏈接和軟鏈接。在Linux中,元數據中的inode號才是文件的唯一標識而非文件名,文件內容要通過inode號來尋找,猶如交通指示牌一樣,指示著數據找尋的方向。
公司主營業務:做網站、成都做網站、移動網站開發等業務。幫助企業客戶真正實現互聯網宣傳,提高企業的競爭能力。創新互聯是一支青春激揚、勤奮敬業、活力青春激揚、勤奮敬業、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰,讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創新互聯推出韶關免費做網站回饋大家。
硬鏈接(Hard Link)
A和B的硬鏈接,則A的目錄項中的inode節點號與B的目錄項中的inode節點號相同,即一個inode節點對應兩個不同的文件名,兩個文件名指向同一個文件,A和B對文件系統來說是完全平等的。如果刪除其中一個,對另外一個沒有任何影響。每增加一個文件名,inode節點上的鏈接數增加一,每刪除一個對應的文件名,inode節點上的鏈接數減一,直到為0,inode節點和對應的數據塊被回收。
注:文件和文件名是不同的東西,rm A刪除的只是A這個文件名,而A對應的數據塊只有在inode節點鏈接數減少為0的時候才會被系統回收。
軟鏈接(Soft Link)
A是B的軟鏈接,A的目錄項中的inode節點號與B的目錄項中的節點號不相同,A和B指向的是兩個不同的inode,繼而指向兩塊不同的數據塊。但是A的數據塊中存放的只是B的路徑名。A和B之間是主從關系,如果B被刪除了,A依然存在,但指向的是一個無效的鏈接。
Linux中軟鏈接和硬鏈接的區別和聯系:
概念不同:
軟鏈接可以理解成快捷方式,和原文件的inode號不一樣,它和Windows下的快捷方式的作用是一樣的,軟鏈接數據塊中記錄的亦是相對路徑指向。
硬鏈接和原文件對應一個inode,就是對應一個文件,可以理解成一個文件有幾個別名。
用法不同:
軟鏈接可以理解成快捷方式,也清楚知道原文件在哪里。它和Windows下的快捷方式的作用是一樣的,和Windows一樣,刪除源文件,快捷方式也就無法使用了。
硬鏈接可以看成一個備份,但并沒有增加空間,因為文件就一個,這種可以防止源文件刪除后不能使用問題;同時也有局限性,不能對目錄和跨文件系統使用。
語法格式(ln):
硬鏈接:ln 源文件 鏈接名
軟鏈接:ln -s 源文件 鏈接名
注意:鏈接的源文件路徑要寫絕對路徑,否則會報錯。
1. 先來了解一下Linux數據是如何保存和查詢的
對操作系統來說,數據分為兩種:1. 用戶數據 (user data) 2.元數據 (metadata)。用戶數據就是保存和記錄文件的內容。比如一個1M的ppt文件,500K的txt文件。這都屬于用戶數據。這個文件總有屬性吧,比如大小、修改時間、訪問時間、創建時間、存儲的位置(文件所在的inode)、文件創建者等等信息。這些屬性信息或者理解為匯總信息,我們稱它為元數據。一句話,用戶數據是文件的真實內容,而元數據則是匯總信息。
在 Linux 中,元數據中的 inode 號(inode 號即索引節點號)才是文件的唯一標識而非文件名。文件名僅是為了方便人們的記憶和使用,系統或程序通過 inode 號尋找正確的文件數據塊。
2. 查看文件對應的inode號
134474678 latest.tar.gz
linux查看文件對應的inode號
可以看出latest.tar.gz這個文件, inode 號是134474678,Linux查找讀寫該文件時,以為個inode號碼為標識,而不是文件名。文件名類似于網站域名,僅僅是方便人類記憶。
也就是說, inode134474678有一個硬鏈接,它就是latest.tar.gz。
3. 根據inode號查找對應的文件
那么,問題來了,系統上有沒有第二個文件,它的inode號碼也是13447467。
使用find查找一下:
查找結果如下:
/root/latest.tar.gz
/root/latest2.tar.gz
linux根據inode號查找對應的文件
硬盤上真的有第二個文件它的inode號碼也是134474678,像這種情況,我們認為inode134474678有兩個硬鏈接。當然,這是本文作者提前準備好的。
為解決文件的共享使用,Linux 系統引入了兩種鏈接:硬鏈接 (hard link) 與軟鏈接(又稱符號鏈接,即 soft link 或 symbolic link)。鏈接為 Linux 系統解決了文件的共享使用,還帶來了隱藏文件路徑、增加權限安全及節省存儲等好處。
4. 確認硬鏈接的數量
查看一下文件latest.tar.gz
輸出結果如下:
-rwxr-xr-x. 2 root root 8743850 Oct 11 15:00 latest.tar.gz
請留意輸出的結果中的數字2,表示該文件存在2個硬鏈接。
正常情況下,一個inode只有一個鏈接,如下例
輸出結果:
-rw-r--r--. 1 root root 9 Nov 21 11:39 abc.txt
請留意輸出的結果中的數字1,表示該文件只存在1個硬鏈接,默認情況下,文件都是只有一個硬鏈接的。
5. 查看軟鏈接
再來看一個文件
lrwxrwxrwx. 1 root root 15 Sep 26 15:57 /dev/stdout - /proc/self/fd/1
linux查看軟鏈接
我們發現,/dev/stdout實際上指向另一個文件/proc/self/fd/1,這就是軟鏈接。類似于Windows系統上的快捷方式。
6. 軟鏈接與硬鏈接的區別
6.1 軟鏈接特點
6.2 硬鏈接特點
ln鏈接符原理如下:
Linux ln鏈接符原理圖
7. 創建文件的鏈接
Linux ln命令是一個非常重要而且常用命令,它用于為文件或者目錄創建鏈接。
7.1 創建軟鏈接
創建一個文件,用于演示軟鏈接。
創建軟鏈接示例:
檢查結果:
輸出文件屬性
lrwxrwxrwx. 1 root root 8 Nov 26 17:48 soft123.txt - soft.txt
linux創建軟鏈接
可以看出這個文件指向當前目錄soft.txt,配置成功。7.2 創建硬鏈接
創建一個文件,用于演示硬鏈接。
創建硬鏈接,沒有使用選項
檢查結果:
輸出文件屬性:
-rw-r--r--. 2 root root 0 Nov 26 17:47 hard123.txt
linux創建硬鏈接
留意以上輸出數字2,表明該文件有2個副本。
8. 總結
ln命令可以創建文件的副本,也可以創建軟鏈接。
1、首先有一個目錄dir, 執行ln -s dir dir_link 創建目錄的軟鏈接。
2、重新創建mkdir源目錄,目錄軟鏈接重新生效。
3、執行命令ln dir dir_hard,創建目錄的硬鏈接。
4、執行命令ln -s file file_link,創建文件file的軟鏈接file_link。
5、執行命令ln file file_hard創建文件file的硬鏈接file_hard。
6、修改硬鏈接file_hard、cat file,同時更新到源文件中即可。
ln
作者: 日期:2003-05-28 13:14:40 瀏覽次數:
ln(link)
功能說明:連接文件或目錄。
語法:ln [-bdfinsv][-S 字尾備份字符串][-V 備份方式][--help][--version][源文件或目錄][目標文件或目錄] 或 ln [-bdfinsv][-S 字尾備份字符串][-V 備份方式][--help][--version][源文件或目錄...][目的目錄]
補充說明:ln指令用在連接文件或目錄,如同時指定兩個以上的文件或目錄,且最后的目的地是一個已經存在的目錄,則會把前面指定的所有文件或目錄復制到該目錄中。若同時指定多個文件或目錄,且最后的目的地并非是一個已存在的目錄,則會出現錯誤信息。
參數:
-b或--backup 刪除,覆蓋目標文件之前的備份。
-d或-F或--directory 建立目錄的硬連接。
-f或--force 強行建立文件或目錄的連接,不論文件或目錄是否存在。
-i或--interactive 覆蓋既有文件之前先詢問用戶。
-n或--no-dereference 把符號連接的目的目錄視為一般文件。
-s或--symbolic 對源文件建立符號連接,而非硬連接。
-S字尾備份字符串或--suffix=字尾備份字符串 用"-b"參數備份目標文件后,備份文件的字尾會被加上一個備份字符串,預設的字尾備份字符串是符號"~",您可通過"-S"參數來改變它。
-v或--verbose 顯示指令執行過程。
-V備份方式或--version-control=備份方式 用"-b"參數備份目標文件后,備份文件的字尾會被加上一個備份字符串,這個字符串不僅可用"-S"參數變更,當使用"-V"參數備份方式指定不同備份方式時,也會產生不同字尾的備份字符串。
--help 在線幫助。
--version 顯示版本信息。
這種問題網上的例子很多的,如果還有不明白,在網上自己多查查
當前名稱:linux下ln命令 linux ln命令詳解
鏈接地址:http://vcdvsql.cn/article48/hehhhp.html
成都網站建設公司_創新互聯,為您提供網站排名、ChatGPT、面包屑導航、品牌網站制作、外貿網站建設、服務器托管
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯