linux下硬連線與軟連線

2021-08-07 08:12:18 字數 2782 閱讀 6373

linux下的檔案管理是通過inode和block來儲存的,乙個檔案內的實際內容是儲存在block中的,而檔案的屬性,許可權之類以及該檔案的block都在在inode當中,乙個檔案會占用乙個inode,而當乙個檔案過大時,它是會占用多個block的,而這些block都在inode當中記錄著。

有了上面這個認識之後,就具體來看看兩種連線究竟是什麼樣子。

ln [-引數] 原始檔 目標檔案

-s :符號連線(symbolic link)即所謂的軟連線,就是windows下的快捷方式

-f :如果目標檔案存在,則直接刪除後再建立

預設不加引數情況下,是建立硬連線。

硬連線的實現機理呢,其實就是讓多個檔案指向同乙個inode號碼而已。簡單來理解,就是你建立的連線只是在該目錄下建立了乙個連線到某inode號的關聯記錄而已。

下面直接用例項來說明:

這裡看到,在/root目錄下建立了乙個crontab檔案的連線。檢視這兩個檔案的inode號竟然是一樣的,並且它的第三個欄位都為2,這裡說一下第三個欄位為連線數,即有多個連線指向該檔案,這裡就更好說明這兩個檔案其實是指向同乙個檔案。

竟然知道了硬連線其實是增加乙個連線數,那麼它的作用就顯而易見了,就是防止誤刪,當你在刪除乙個檔案時,其實是在減少該檔案的連線數,這裡等介紹完軟連線後再具體說這個問題。

侷限性:

不能跨檔案系統

不能連線到目錄

軟連線是建立乙個新的檔案,而該檔案的內容就是它所指向檔案的檔名,當原始檔被刪除後,該連線檔案會開啟失敗,因為已經找不到原始檔的「檔名」了。

同樣是剛才的例子

看到兩個檔案的inode是不一樣的,這裡的crontab檔案的連線數為2,因為我們剛才建立了乙個硬連線還在呢,所以是2,但是新建立的軟連線這個檔案的連線數卻是1,這裡足可見,軟連線是重新建立了乙個檔案,而且細心的話,你可以發現這個新檔案的大小為12個bytes,因為/etc/crontab是12個bytes,就是上面提到的,該檔案的內容是它所指向的檔名。

最後來通過一系列的例項來具體感受下兩種連線的不同。

由於是測試,我們就在/tmp目錄下進行

cp -a /etc/passwd .

du -sb ; df -i

.//這裡的du是評估檔案系統的磁碟使用量(一般用來檢視目錄的使用情況,df是列出檔案系統整體磁碟使用量)

這裡還是給出兩個命令的引數吧

du:

-a:列出所有檔案及目錄的容量

-h:以常見的容量單位呈現(g/m)

-s:列出總量,不細給出每個目錄的用量

-s:不包括子目錄下的

-k:以kb為單位

-m:以mb為單位

df:

-a:列出所有的檔案系統,包括特殊的/proc

-k:以kb為單位

m:以mb為單位

h:以較為容易閱讀的gb,mb,kb來顯示

h:用1m=1000k來代替1m=1024k的進製

t:連同檔案系統名也顯示

i:不用硬碟容量,而使用inode的數量來顯示

下來就具體建立軟硬連線來檢視:

看到,在建立硬連線前後,/tmp目錄下的總磁碟用量和inode量沒有發生變化,儘管多了乙個passwd-hd檔案。

ls -li passwd*

//檢視以passwd開頭的檔案

passwd和passwd-hd兩個檔案一模一樣,且inode號一樣。

passwd-so和passwd檔案的inode號明顯不同,連線數為1,大小為6個bytes,即passwd的大小。

建立軟連線檔案後,整個磁碟的使用總量增加了,inode號的使用多了乙個1,即新建立了乙個檔案。

當刪除passwd檔案後,我們看下硬連線和軟連線是否還有效。

硬連線扔能正確檢視

軟連線顯示沒有該目錄

再來看一下,passwd-hd的檔案連線數由2變為1了。

綜上,就是關於硬連線和軟連線問題。

linux下的軟連線與硬連線

1 檔名有唯一的i node表示,看做檔名為指標變數,i node是指標所指物件的內容,裡面主要是包括了檔案的屬性之類的,以及許可權。3 這個過程就是共享物件 i node 的過程 缺陷 一是不可以在不同檔案系統建立,二是只能超級使用者才能使用 root 軟連線 1 出現的目的就是消除上述兩個缺陷,...

Linux 軟連線與硬連線

linux 軟連線與硬連線 2008 10 31 15 44 13 標籤 linux 職場休閒 軟連線與硬連線 linux 軟連線與硬連線 對於乙個檔案來說,有唯一的索引接點與之對應,而對於乙個索引接點號,卻可以有多個檔名與之對應。因此,在磁碟上的同乙個檔案可以通過不同的路徑去訪問該檔案。注意在li...

Linux軟連線與硬連線

linux鏈結概念 linux鏈結分兩種,一種被稱為硬鏈結 hard link 另一種被稱為符號鏈結 symbolic link 預設情況下,ln命令產生硬鏈結,ln s命令產生軟連線。硬連線 硬連線指通過索引節點來進行連線。在linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配...