婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 區分Linux硬鏈接與軟鏈接

區分Linux硬鏈接與軟鏈接

熱門標簽:電銷機器人對公司貢獻 山東400電話如何辦理 智能外呼系統如何部署 宿州防封外呼系統廠家 高德地圖標注在建線路 ai電銷機器人 如何開發 濟源電話外呼系統怎么樣 電話機器人服務差 蘭州語音電銷機器人軟件

在Linux中,連接文件有兩種,一種類似于Windows的快捷方式,可以讓你快速地鏈接到目標文件(或目錄),這種稱為軟鏈接(soft link),也叫作符號鏈接(symbolic link);另一種則是通過文件系統的 inode 連接來產生新文件名,而不是產生新文件。這種稱為硬鏈接(hard link),也叫作實體鏈接。 軟鏈接與硬鏈接是兩種完全不一樣的東西。

1.硬鏈接(hard link)

1.1簡介

一般情況下,文件名和inode號碼是一一對應關系,每個inode號碼對應一個文件名。但是,Unix/Linux系統,允許多個文件名指向同一個inode號碼。這意味著,可以用不同的文件名訪問同樣的內容;對文件內容進行修改,會影響到所有文件名;但是,刪除一個文件名,不影響另一個文件名的訪問。這種情況就被稱為"硬鏈接"(hard link)。

ln命令可以創建硬鏈接:

ln <源文件> <硬鏈接>

運行上面這條命令以后,源文件與目標文件的inode號碼相同,都指向同一個inode。inode信息中有一項叫做"鏈接數",記錄指向該inode的文件名總數,這時就會增加1。反過來,刪除一個文件名,就會使得inode節點中的"鏈接數"減1。當這個值減到0,表明沒有文件名指向這個inode,系統就會回收這個inode號碼,以及其所對應block區域。

這里順便說一下目錄文件的"鏈接數"。創建目錄時,默認會生成兩個目錄項:".“和”…"。前者的inode號碼就是當前目錄的inode號碼,等同于當前目錄的"硬鏈接";后者的inode號碼就是當前目錄的父目錄的inode號碼,等同于父目錄的"硬鏈接"。所以,任何一個目錄的"硬鏈接"總數,總是等于2加上它的子目錄總數(含隱藏目錄),這里的2是本身目錄名對其的“硬鏈接”和當前目錄下的“.”對其的硬鏈接“。

1.2硬鏈接與inode的關系

硬鏈接本質上是文件的別名,與源文件映射到相同的inode。下面分別在/etc和/root目錄下建立源文件lvlv.txt和硬鏈接lvlv_hd.txt,并查看文件屬性。

#創建硬鏈接
ln /etc/lvlv.txt /root/lvlv_hd.txt 

#列出文件屬性
ll -i /etc/lvlv.txt
7792474 -rw---x--x 2 b3335 b3335 22 Nov 9 21:05 lvlv.txt
ll -i /root/lvlv_hd.txt
7792474 -rw---x--x 2 b3335 b3335 22 Nov 9 21:05 lvlv_hd.txt

從上面可以看出硬鏈接/etc/lvlv_hd.txt的inode與源文件lvlv.txt相同,其它信息完全相同。存儲示意圖如下:

圖示的內容表示目錄/root下的硬鏈接lvlv_hd.txt在與/etc下文件lvlv.txt通過相同的inode指向同一個文件內容。目錄的數據實體中記錄著每一個文件名與該文件的inode號。可見,硬鏈接本質上是文件的一個別名。

1.3硬鏈接注意事項

硬鏈接有兩個限制:
(1)不能跨文件系統;硬鏈接只是文件的別名,而非獨立的文件,因此僅能在單一文件系統上面進行,所以不能跨文件系統。

(2)不能連接到目錄。因為硬鏈接連接到目錄可會導致目錄的inode與實體block形成環狀。此時,如果刪除目錄,會導致目錄實體block無法被系統訪問,產生孤立的目錄(從根目錄無法再訪問)。如果要刪除孤立的目錄inode與實體block,需要執行標記和清理,這在磁盤上操作是非常耗時的。軟鏈接不會導致此問題,因為它們不會增加目標目錄的鏈接數。

比如對目錄/etc在其目錄或其子目錄中建立一個硬鏈接/etc/etc_hd,此時就會形成環狀,如下圖所示:

此時,如果執行rm -r /etc刪除目錄/etc,實際上目錄/etc并沒有被真正刪除,因為/etc的inode和block仍然殘留,編程孤立的目錄,此時從根目錄無法訪問/etc。

2.軟鏈接(soft link)

與硬鏈接不同的是軟鏈接會創立一個獨立的文件,該文件有自己的inode,但這個文件會讓數據的讀取指向它連接的那個文件。由于只是利用了文件來作為指向的操作,所以當源文件被刪除后軟鏈接文件就會提示“打不開”,實際是找不到被刪除的源文件了。

下面創建軟鏈接并查看軟鏈接的屬性:

#創建軟鏈接
$ ln -s /etc/lvlv.txt lvlv_sb.txt

#查看文件屬性
$ ll -i 
7792474 -rw---x--x 2 b3335 b3335 22 Nov 9 21:05 lvlv.txt
[b3335@MIC root]$ ll -i 
7792478 lrwxrwxrwx 1 b3335 b3335 13 Nov 10 15:23 lvlv_sb.txt -> /etc/lvlv.txt

可以看出,軟鏈接的inode節點與源文件lvlv.txt不同,且軟鏈接的大小剛好等于字符串”/etc/lvlv.txt”的長度13,可見軟鏈接是單獨的一個新的文件,文件的內容就是指向的文件的路徑。

下面給出軟鏈接的示意圖,同樣以文件lvlv.txt為例。

以上就是區分Linux硬鏈接與軟鏈接的詳細內容,更多關于Linux硬鏈接與軟鏈接的資料請關注腳本之家其它相關文章!

標簽:安陽 佛山 云南 南寧 晉中 衡水 畢節 巴中

巨人網絡通訊聲明:本文標題《區分Linux硬鏈接與軟鏈接》,本文關鍵詞  區分,Linux,硬,鏈接,與,軟,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《區分Linux硬鏈接與軟鏈接》相關的同類信息!
  • 本頁收集關于區分Linux硬鏈接與軟鏈接的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 察雅县| 崇州市| 广州市| 沿河| 内江市| 盱眙县| 佛坪县| 万山特区| 高密市| 连云港市| 延川县| 湖北省| 富宁县| 屏南县| 子洲县| 新化县| 台湾省| 崇文区| 赤壁市| 广汉市| 广南县| 鲁山县| 方山县| 彭阳县| 文安县| 杂多县| 榆中县| 苗栗市| 萨迦县| 开平市| 赣州市| 鸡西市| 开封市| 景东| 洪江市| 五莲县| 安康市| 张家口市| 徐州市| 罗田县| 南丰县|