Linux硬鏈接和軟鏈接

硬鏈接和軟連接

硬鏈接:
硬鏈接是指通過索引節點來進行轉換,在Linux的文件系統中,保存在磁盤分區中的文件
不管是什麼類型都會給它分配一個編號,這個編號被稱爲索引節點(Inode Index)或者成爲Inode
在Linux系統中,多個文件中指向同一個索引節點(Inode)是正常允許的。一般這種鏈接就成爲硬鏈接。硬鏈接的作用之一是允許一個多文件擁有多個
有效路徑名,這樣用戶就可以建立硬鏈接到重要的文件,以防止“誤刪”源數據(很多硬件,如netapp存儲中的快照功能就應用了這個原理,增加了一個快照就多了一個硬鏈接)。問什麼文件建立了硬鏈接就會放置數據刪除呢?
因爲文件系統的原理是,只要文件名指向統一索引節點(Inode)還有一個以上的鏈接(僅僅刪除了該文件指向)。只刪除其中一個鏈接並不影響索引節點本身和其它的鏈接(既數據文件指向)。只刪除一個鏈接並不影響索引節點本身和其它的鏈接(既數據文件實體並未被刪除),只有當最後一個鏈接被刪除後,此時如果有新數據要存儲到硬盤時被刪除文件的數據塊及目錄的鏈接纔會被釋放,空間被新數據佔用覆蓋。此時,數據就再也無法找回了。也就是說,在linux系統中,刪除文件(其實目錄也是文件)的添加是於之相關的所有硬鏈接文件均被刪除。

軟鏈接:
軟鏈接有時也被稱爲符號鏈接(Symbolic Link)。軟鏈接文件就類型與Windows系統中的快捷文件。它實際上是一個特殊的文件。在軟鏈接中,軟鏈接文件實際上就是一個本地文件,這個文件中包含有軟鏈接指向另一文件的位置信息內容,因此,通過訪問這個“快捷方式”就可以迅速定位到軟鏈接所指向的源文件實體。

實例演示:

[root@localhost /]# mkdir /backup #創建一個空目錄
[root@localhost backup]# touch 1.txt #創建一個測試空文件
[root@localhost backup]# cat 1.txt #查看空文件裏邊的內容
123456789

[root@localhost backup]# ln 1.txt 1.txt_ying #創建硬鏈接 ln
[root@localhost backup]# ls -ls
total 8
4 -rw-r--r--. 2 root root 10 Jan 31 06:10 1.txt
4 -rw-r--r--. 2 root root 10 Jan 31 06:10 1.txt_ying

[root@localhost backup]# ln -s 1.txt 1.txt_ruan #創建軟鏈接 ln -s 文件名 新文件名

[root@localhost backup]# ll
total 8
-rw-r--r--. 2 root root 10 Jan 31 06:10 1.txt
lrwxrwxrwx. 1 root root 5 Jan 31 06:11 1.txt_ruan -> 1.txt #軟鏈接
-rw-r--r--. 2 root root 10 Jan 31 06:10 1.txt_ying

[root@localhost backup]# mkdir 1.txt #創建一個目錄
[root@localhost backup]# ll
total 4
drwxr-xr-x. 2 root root 6 Jan 31 07:04 1.txt #目錄
lrwxrwxrwx. 1 root root 5 Jan 31 06:11 1.txt_ruan -> 1.txt
-rw-r--r--. 1 root root 10 Jan 31 06:10 1.txt_ying

[root@localhost backup]# ln 1.txt #目錄創建硬鏈接
ln: ‘1.txt’: hard link not allowed for directory #目錄不允許硬鏈接
[root@localhost backup]# ln -s 1.txt 1.txt_ruan_new #目錄創建軟鏈接
root@localhost backup]# ls -ll
total 4
drwxr-xr-x. 2 root root 6 Jan 31 07:04 1.txt
lrwxrwxrwx. 1 root root 5 Jan 31 06:11 1.txt_ruan -> 1.txt
lrwxrwxrwx. 1 root root 5 Jan 31 07:05 1.txt_ru_new -> 1.txt #目錄軟鏈接
-rw-r--r--. 1 root root 10 Jan 31 06:10 1.txt_ying

總結:Ln命令不能對目錄創建硬鏈接,但可以對目錄創建軟鏈接,對於目錄的軟鏈接也是生產場景運維中常用的功能

[root@localhost backup]# rm -f 1.txt #測試刪除創建的空文件
[root@localhost backup]# ll -li
total 4
33745512 lrwxrwxrwx. 1 root root 5 Jan 31 06:11 1.txt_ruan -> 1.txt
33745552 -rw-r--r--. 1 root root 10 Jan 31 06:10 1.txt_ying

提示:內容還在,其實這就是因爲有1.txt_ying硬鏈接的存儲,因此即使刪除了1.txt,但是仍有硬鏈接指向着文件的INODE節點,所以,此時,文件纔會被釋放刪除,當刪除文件1.txt時,僅僅刪除了1.txt該文件的INODE節點的鏈接而已。
總結:通過上面的測試可以看出:當刪除原始文件1.txt後,硬鏈接1.txt_ying不收影響,但是軟鏈接文件1.txt_ruan失效。

鏈接總結:

  1. 刪除軟鏈接1.txt_ruan,對1.txt_ying無影響
  2. 刪除硬鏈接1.txt_ying對1.txt_ruan無影響
  3. 刪除源文件1.txt,對硬鏈接1.txt_ying無影響,對軟鏈接有影響。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章