Linux系統中軟鏈接和硬連接的區別?

linux鏈接

Linux鏈接分兩種,一種被稱為硬鏈接(Hard Link),另一種被稱為軟鏈接,即符號鏈接(Symbolic Link)。默認情況下,ln命令產生硬鏈接。

1、硬連接

硬連接指通過索引節點號來進行連接。inode是可以對應多個文件名的在Linux的文件系統中,保存在磁盤分區中的文件不管是什麼類型都給它分配一個編號,稱為索引節點號(Inode Index)。

在Linux中,多個文件名可以指向同一索引節點。一般這種連接就是硬連接。

硬連接的作用是什麼?

允許一個文件擁有多個有效路徑名,這樣用戶就可以建立硬連接到重要文件,以防止“誤刪”的功能。

只刪除一個連接並不影響索引節點本身和其它的連接,只有當最後一個連接被刪除後,文件的數據塊及目錄的連接才會被釋放。

也就是說,文件真正刪除的條件是與之相關的所有硬連接文件均被刪除。

示例1

ln命令創建硬鏈接

1、創建一個文件a.txt文件,並寫入123456到文件x.txt中

[root@localhost mytest]# echo 123456 > a.txt

2、創建硬連接

[root@localhost mytest]# ln a.txt b.txt

3、查看a.txt 和b.txt的文件信息,可以看到兩個文件的信息一樣

[root@localhost mytest]# ll a.txt

[root@localhost mytest]# ll b.txt
Linux系統中軟鏈接和硬連接的區別?

硬鏈接的原理就是多個文件名指向同一個inode,因此多個文件名共用一個inode號,達到共享與備份的目的

注意:

1、源文件被刪除,不影響鏈接文件的正常使用,只有把所有和源文件相關聯的硬連接全部刪除,源文件才被刪除

Linux系統中軟鏈接和硬連接的區別?

2、硬鏈接不能跨分區進行創建

Linux系統中軟鏈接和硬連接的區別?

軟連接

符號連接(Symbolic Link),也叫軟連接。

軟鏈接文件有類似於Windows的快捷方式。它實際上是一個特殊的文件。在符號連接中,文件實際上是一個文本文件,其中包含的有另一文件的位置信息

從上面鏈接後的結果可以看出來軟鏈接與硬鏈接,區別不僅僅是在概念上,在實現上也是完全不同的。

ln -s 創建軟連接

軟鏈接:相當於windows中的快捷方式

語法:ln -s 源文件 軟鏈接的名字

示例1:

1、創建軟連接

[root@localhost mytest]# ln -s b.txt b-link.txt

2、通過軟連接查看文件

[root@localhost mytest]# ll b-link.txt 

3、刪除源文件

[root@localhost mytest]# rm -rf b.txt 

4、再次通過軟連接查看文件

[root@localhost mytest]# ll b-link.txt
Linux系統中軟鏈接和硬連接的區別?

最終,源文件被刪除,鏈接文件失效

示例2:

能針對目錄和跨分區創建軟鏈接

[root@xuegod63 ~]# ln -s /boot/grub grub-link
Linux系統中軟鏈接和硬連接的區別?

能跨分區創建(源文件必須寫絕對路徑)

Linux系統中軟鏈接和硬連接的區別?

硬鏈接和軟連接的區別是什麼

1.硬鏈接原文件/鏈接文件公用一個inode號,說明他們是同一個文件,而軟鏈接原文件/鏈接文件擁有不同的inode號,表明他們是兩個不同的文件;

2.在文件屬性上軟鏈接明確寫出了是鏈接文件,而硬鏈接沒有寫出來,因為在本質上硬鏈接文件和原文件是完全平等關係;

3.鏈接數目是不一樣的,軟鏈接的鏈接數目不會增加;

4.文件大小是不一樣的,硬鏈接文件顯示的大小是跟原文件是一樣的。而這裡軟鏈接顯示的大小與原文件就不同了,BBB大小是95B,而BBBsoft是3B。因為BBB共有3個字符

5.軟鏈接沒有任何文件系統的限制,任何用戶可以創建指向目錄的符號鏈接

建立軟鏈接就是建立了一個新文件。當訪問鏈接文件時,系統就會發現他是個鏈接文件,它讀取鏈接文件找到真正要訪問的文件。

軟鏈接的缺點:

因為鏈接文件包含有原文件的路徑信息,所以當原文件從一個目錄下移到其他目錄中,再訪問鏈接文件,系統就找不到了,而硬鏈接就沒有這個缺陷,你想怎麼移就怎麼移;還有它要系統分配額外的空間用於建立新的索引節點和保存原文件的路徑。


分享到:


相關文章: