1. 程式人生 > >硬鏈接和軟鏈接的區別

硬鏈接和軟鏈接的區別

linux

# 硬鏈接和軟鏈接的區別
## 1、概念
在linux中,鏈接可分為兩種:一種為硬鏈接,另一種為軟鏈接。
硬鏈接:ln 源文件 目標文件
軟鏈接:ln -s(soft)源文件 目標文件
### 硬鏈接
硬鏈接是指通過索引節點inode來進行鏈接。
linux系統中每個文件對應一個inode,並且允許多個文件名指向用一個inode。這種情況的文件就成為硬鏈接。
它的作用之一就是允許一個文件擁有多個入口,防止重要數據誤刪。

硬鏈接的原理:

技術分享



### 軟鏈接
軟鏈接也稱為符號鏈接,相當於windows中的快捷方式。文件類型為L,是一個特殊的文件。文件中包含了另一個文件的路徑信息內容。

軟鏈接的原理:

技術分享
## 2、實驗
###實驗1:首先創建一個magedufile,可以看到硬鏈接數為1,通過ln創建一個硬鏈接magedufile_link,再次通過ls -li,可以發現數字變成2,兩個文件第一列inode數量都為33612019。cat硬鏈接內容與源文件一樣。把源文件刪除後,link文件依然還在,內容沒丟失,鏈接數變為1。ln不能對目錄創建硬鏈接。


[[email protected] magedu]#ls -l
-rw-r--r--. 1 root root 17 Jul 23 13:38 magedufile
[[email protected] magedu]#cat magedufile
i am study linux
[[email protected] magedu]#ln magedufile magedufile_link
[[email protected] magedu]#ls -li
total 8
33612019 -rw-r--r--. 2 root root 17 Jul 23 13:38 magedufile
33612019 -rw-r--r--. 2 root root 17 Jul 23 13:38 magedufile_link
[[email protected] magedu]#cat magedufile_link
i am study linux
[[email protected] magedu]#rm -f magedufile
[[email protected] magedu]#ls
magedufile_link
[[email protected] magedu]#cat magedufile_link
i am study linux
[[email protected] magedu]#ls -li
total 4
33612019 -rw-r--r--. 1 root root 17 Jul 23 13:38 magedufile_link
[[email protected] ~]#ln Desktop Desktop.bak
ln: ‘Desktop’: hard link not allowed for directory

總結:
(1)具有相同inode節點號的多個文件是為互為硬鏈接文件
(2)刪除硬鏈接文件或者源文件,文件本身並未被刪除
(3)刪除文件的所有硬鏈接和源文件,文件才真正被刪除
(4)硬鏈接文件是文件的另一個入口
(5)硬鏈接文件可以用rm命令刪除
###實驗2:創建一個文件,通過ln -s創建軟鏈接後查看發現inode不同,軟鏈接後面跟一個->指向源文件,當刪除源文件後,軟鏈接指向發生錯誤。

[[email protected] app]#echo "i am study linux" >/app/magedudir
[[email protected] app]#ls -l
total 4
-rw-r--r--. 1 root root 17 Jul 23 15:01 magedudir
[[email protected] app]#ln -s magedudir magedudir_slink
[[email protected] app]#ls -li
total 4
67 -rw-r--r--. 1 root root 17 Jul 23 15:01 magedudir
68 lrwxrwxrwx. 1 root root 9 Jul 23 15:03 magedudir_slink -> magedudir
![](http://i.imgur.com/rA07xhv.png)

總結:
(1)快捷方式,可以通過readlink查看指向
(2)是一個文本文件。裏面存放的是源文件的路徑,指向源文件
(3)刪除源文件,軟鏈接依然存在,但是無法正常指向源文件
(4)失效的時候紅底閃爍提示
(5)軟鏈接和源文件是不同類型的文件,也是不同的文件。inode不相同。
(6)刪除軟鏈接文件可以用rm命令



## 3、區別
(1)創建方式的不同。默認不帶參數的情況下,ln創建的是硬鏈接,帶-s參數創建的是軟鏈接
(2)硬鏈接文件與源文件的inode相同,而軟鏈接文件的inode與源文件不同
(3)ln不能對目錄創建硬鏈接,但可以創建軟鏈接。
(4)刪除文件的軟鏈接文件,對源文件及硬鏈接文件無任何影響
(5)刪除文件的硬鏈接文件,對源文件及軟鏈接文件無任何影響
(6)刪除鏈接文件的源文件,對硬鏈接文件無影響,會導致軟鏈接失效
(7)同時刪除源文件及其硬鏈接,整個文件才會被刪除
(8)軟鏈接可以跨文件系統,硬鏈接不可以跨文件系統

##4、附加
###文件的刪除原理
文件的刪除由兩個變量控制:
i_link 文件的硬鏈接數量
i_count 引用計數(有一個程序調用就+1)
文件刪除的條件:
i_link=0 && i_count=0

硬鏈接和軟鏈接的區別