硬連結

硬連結(hard link, 也稱連結)就是一個檔案的一個或多個檔案名稱。再說白點,所謂連結無非是把檔案名稱和計算機檔案系統使用的節點號連結起來。因此我們可以用多個檔案名稱與同一個檔案進行連結,這些檔案名稱可以在同一目錄或不同目錄。

基本介紹

  • 中文名:硬連結
  • 外文名:hard link
  • 釋義:一個檔案的一個或多個檔案名稱
  • 目的:多個檔案名稱能同時修改同一個檔案
硬連結概念,關於Windows系統的硬連結,簡介,Windows系統的硬連結,系統屬性測試,硬連結在Windows系統下的套用,關於Linux系統的硬連結,硬連結的定義,硬連結的使用與注意事項,硬連結與軟連結的區別,

硬連結概念

一個檔案有幾個檔案名稱(用ln命令實現多個檔案名稱),我們就說該檔案的連結數為幾。由定義可知,此連結數可以是1, 這表明該檔案只有一個檔案名稱。
總之,硬連結就是讓多個不在或者同在一個目錄下的檔案名稱,同時能夠修改同一個檔案,其中一個修改後,所有與其有硬連結的檔案都一起修改了。

關於Windows系統的硬連結

簡介

Windows系統的硬連結是一種針對檔案的特殊捷徑,只不過這種捷徑的實現和一般的捷徑不一樣,是NTFS檔案系統特有的屬性之一,在Linux下面,也有類似的機制。
認識了硬連結究竟是怎么一回事,理解硬連結的兩個限制就容易多了。
1、硬連線適用於在同一個卷的檔案級別,不允許給目錄創建硬連結;
2、硬連線是不能跨卷的,只有在同一檔案系統中的檔案之間才能創建連結。

Windows系統的硬連結,系統屬性測試

WindowsVista/Windows7自帶了創建硬連線的命令:mklink.exe,利用這個命令,我們可以給指定的檔案創建硬連線:
下面的命令將在link.txt和source.txt之間建立硬連線關係
C:\Users\hoii\Desktop》mklink /h link.txt gb.txt
為link.txt《《===》》gb.txt創建了硬連結
注意上面的例子:link.txt本是一個不存在的檔案,但是當執行完mklink命令以後,link.txt檔案也就被創建了。其實,link.txt是一個虛假的檔案,它是在檔案系統層面上對gb.txt檔案的一個映射,而link.txt是不占硬碟空間的。
關於硬碟空間的占用問題,可以這樣測試:
1、給硬碟劃分一個新分區,空間只有2GB
2、在這個分區的test目錄裡面新建了一個1.9GB大小的檔案,此時剩餘空間是0.1GB
3、用mklink命令給這個1.9GB大小的檔案建立了一個硬連線
4、檢查這個分區的剩餘空間,還是0.1GB,但是如果用資源管理器看test目錄的屬性,會發現有2個檔案,總大小是3.8GB(整個分區才2GB,能夠容納3.8GB大小的檔案嗎?顯然不可能了)
還是針對上述的例子,如果我們把原始的檔案gb.txt刪除以後,link.txt檔案還是會繼續存在的,且內容就是source.txt的檔案內容。也就是說,我們刪除gb.txt,實際上刪除的僅僅是這種連線關係,檔案本身還是沒有被操作的。
關於硬連線,最後一個需要介紹的內容是:當硬連線建立以後,硬連線雙方任何一個對象被修改,都會造成對應的連線對象被修改。例如上面的例子:如果修改了link.txt,那么gb.txt檔案也會同步被修改,反之亦然。這一點和SHELL層面的捷徑不同,SHELL層面的捷徑檔案LNK僅僅是一個指示關係,修改LNK檔案並不影響LNK檔案指向的對象,修改LNK檔案指向的對象也不會影響LNK檔案。

硬連結在Windows系統下的套用

1.節省硬碟空間。同樣的檔案,只需要維護硬連線關係,不需要進行多重的拷貝,這樣可以節省硬碟空間。
2.重命名檔案。重命名檔案並不需要打開該檔案,只需改動某個目錄項的內容即可。
3.刪除檔案。刪除檔案只需將相應的目錄項刪除,該檔案的連結數減1,如果刪除目錄項後該檔案的連結數為零,這時系統才把真正的檔案從磁碟上刪除。
4.檔案更新。如果涉及檔案更新,只需要先在WinSxS目錄裡面下載好一個新版本,然後修改Windows\System32下面同名檔案的硬連線關係,從舊版本的硬連線指向新版本的硬連線,這樣就能夠快速的完成檔案的更新工作,而不需要進行檔案的複製,速度也會快不少。
5.卸載補丁。遇到需要補丁卸載的情況,只需要把硬連線指向改為舊版本就可以了,沒有檔案替換的問題。而且建立了硬連線關係的檔案之間的修改是同步的,因此只要有一方被修改了,另一方也會得到修改。
篇幅關係,不再贅述。

關於Linux系統的硬連結

硬連結的定義

Linux 檔案系統最重要的特點之一是它的檔案連結。連結是對檔案的引用,這樣您可以讓檔案在檔案系統中多處被看到。不過,在 Linux 中,連結可以如同原始檔案一樣來對待。連結可以與普通的檔案一樣被執行、編輯和訪問。對系統中的其他應用程式而言,連結就是它所對應的原始檔案。當您通過連結對檔案進行編輯時,您編輯的實際上是原始檔案。連結不是副本。有兩種類型的連結:硬連結和符號連結(軟連結)。
硬連結只能引用同一檔案系統中的檔案。它引用的是檔案在檔案系統中的物理索引(也稱為 inode)。當您移動或刪除原始檔案時,硬連結不會被破壞,因為它所引用的是檔案的物理數據而不是檔案在檔案結構中的位置。硬連結的檔案不需要用戶有訪問原始檔案的許可權,也不會顯示原始檔案的位置,這樣有助於檔案的安全。如果您刪除的檔案有相應的硬連結,那么這個檔案依然會保留,直到所有對它的引用都被刪除。

硬連結的使用與注意事項

ln 源檔案 目標檔案 : 創建硬連結檔案
比如 ln test2.sh test_l.sh。這裡test_l.sh就是連結到了test2.sh腳本檔案
注意事項:
1、修改源檔案或者目標檔案, 對應另外一個檔案也會發生相應修改.
2、刪除源檔案或者目標檔案, 對另外一個檔案沒有影響.
3、硬連結檔案不占用存儲空間.
4、不能對目錄檔案進行創建硬連結操作.
5、硬連結檔案不能跨檔案系統.

硬連結與軟連結的區別

在Linux的檔案系統中,保存在磁碟分區中的檔案不管是什麼類型都給它分配一個編號,稱為索引節點號inode 。軟連線,其實就是新建立一個檔案,這個檔案就是專門用來指向別的檔案的(那就和windows 下的捷徑的那個檔案有很接近的意味)。軟連結產生的是一個新的檔案,但這個檔案的作用就是專門指向某個檔案的,刪了這個軟連線檔案,那就等於不需要這個連線,和原來的存在的實體原檔案沒有任何關係,但刪除原來的檔案,則相應的軟連線不可用(cat那個軟連結檔案,則提示“沒有該檔案或目錄“)
硬連線是不會建立inode的,他只是在檔案原來的inode link count域再增加1而已,也因此硬連結是不可以跨越檔案系統的。相反都是軟連線會重新建立一個inode,當然inode的結構跟其他的不一樣,他只是一個指明源檔案的字元串信息。一旦刪除源檔案,那么軟連線將變得毫無意義。而硬連結刪除的時候,系統調用會檢查inode link count的數值,如果他大於等於1,那么inode不會被回收。因此檔案的內容不會被刪除。
創建硬連結實際上是為原檔案在儲存器中的資源再新建一個入口,所以硬連結和原檔案指向的其實是儲存器中的同一處資源(可以理解為硬連結和原檔案就是同一個檔案)。可以通過ls -i來查看一下,這兩個檔案的inode號是同一個,說明它們是同一個檔案;而軟連結建立的是一個指向,即連結檔案內的內容是指向原檔案的指針,它們是兩個檔案。
軟連結可以跨檔案系統,硬連結不可以;軟連結可以對一個不存在的檔案名稱(filename)進行連結(當然此時如果你vi這個軟連結檔案,linux會自動新建一個檔案名稱為filename的檔案),硬連結不可以(其檔案必須存在,inode必須存在);軟連結可以對目錄進行連線,硬連結不可以。兩種連結都可以通過命令 ln 來創建。ln 默認創建的是硬連結。使用 -s 開關可以創建軟連結

相關詞條

熱門詞條

聯絡我們