Linux中的鏈接文件_軟鏈接和硬鏈接


一、鏈接文件介紹

Linux操作系統中的“鏈接文件”分為硬鏈接(hard link)和軟鏈接(symbolic link)。兩種鏈接的本質區別在於inode。以下是詳細介紹:

  • 硬鏈接:當系統要讀取一個文件時,會先讀inode信息,然后再根據inode中的信息到塊領域將數據取出來。而硬鏈接是直接再建立一個inode鏈接到文件放置的塊領域,即進行硬連接時該文件內容沒有任何變化,只是增加了一個指向這個文件的inode,並不會額外占用磁盤空間。硬鏈接有兩個限制:
  1. 不能跨文件系統,因為不同的文件系統有不同的inode table;
  2. 不能鏈接目錄。
  • 軟鏈接:與硬鏈接不同,軟鏈接是建立一個獨立的文件,當讀取這個鏈接文件時,它會把讀取的行為轉發到該文件所鏈接的文件上。舉個例子:現在有一個文件a,我們做了一個軟鏈接文件b,b指向a,當讀取b時,b就會把讀取的動作轉發到a上,這樣就讀取了文件a。當我們刪除文件a時,鏈接文件b不會被影響,但如果再次讀取b時,會提示無法打開文件;然而當我們刪除b時,不會對文件a造成任何影響。

 

二、兩者的區別

  • 硬鏈接記錄的是目標的inode,軟鏈接記錄的是目標的路徑。
  • 軟鏈接就像是快捷方式,而硬鏈接就像是備份。
  • 軟鏈接可以做跨分區的鏈接,而硬鏈接由於inode的緣故,只能在本分區中做鏈接。所以,軟鏈接的使用頻率要高很多。

 

三、如何建立軟鏈接和硬鏈接

ln(link)命令的格式:ln [-s] [來源文件] [目的文件]。該命令常用的選項是-s,如果不加-s選項就是建立硬鏈接,加上-s選項就建立軟鏈接(可以這樣記憶,s->soft(柔軟的)),例:

注:上例中的du命令用來計算文件或者目錄的大小,-k表示以KB為單位,這里的4,就指的是4KB;ll命令等同於 ls -l。

一開始目錄下面只有一個passwd文件,目錄總大小為4KB,做了硬鏈接后,雖然兩個文件的大小都為2364B,但目錄的總大小沒有變化。

 

所以我們先試着刪除源文件,再來比較,例:

在上例中,刪除源文件passwd后,文件大小依舊沒有改變。說明硬鏈接文件並不會復制數據塊額外占用磁盤空間。

再看硬鏈接的另外一個限制——不允許目錄做硬鏈接。例:

 

軟鏈接特性

首先建立一個測試目錄456,然后復制/etc/passwd文件來做測試,再給它做一個軟鏈接文件,例:

上例中,如果刪除源文件,則不能讀取軟鏈接文件,而且使用命令ll查看時發現顏色也有變化。

 

說明目錄不可以做硬鏈接,但可以做軟鏈接,例:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM