Windows系統(tǒng)的硬鏈接是一種針對文件的特殊快捷方式,只不過這種快捷方式的實現(xiàn)和一般的快捷方式不一樣,是NTFS文件系統(tǒng)特有的屬性之一,在Linux下面,也有類似的機制。

創(chuàng)新互聯(lián)是專業(yè)的德陽網(wǎng)站建設(shè)公司,德陽接單;提供成都網(wǎng)站設(shè)計、做網(wǎng)站,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行德陽網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
認識了硬鏈接究竟是怎么一回事,理解硬鏈接的兩個限制就容易多了。
1、硬連接適用于在同一個卷的文件級別,不允許給目錄創(chuàng)建硬鏈接;
2、硬連接是不能跨卷的,只有在同一文件系統(tǒng)中的文件之間才能創(chuàng)建鏈接。 WindowsVista/Windows7自帶了創(chuàng)建硬連接的命令:mklink.exe,利用這個命令,我們可以給指定的文件創(chuàng)建硬連接:
下面的命令將在link.txt和source.txt之間建立硬連接關(guān)系
C:\Users\hoii\Desktop》mklink /h link.txt gb.txt
為link.txt《《===》》gb.txt創(chuàng)建了硬鏈接
注意上面的例子:link.txt本是一個不存在的文件,但是當執(zhí)行完mklink命令以后,link.txt文件也就被創(chuàng)建了。其實,link.txt是一個虛假的文件,它是在文件系統(tǒng)層面上對gb.txt文件的一個映射,而link.txt是不占硬盤空間的。
關(guān)于硬盤空間的占用問題,可以這樣測試:
1、給硬盤劃分一個新分區(qū),空間只有2GB
2、在這個分區(qū)的test目錄里面新建了一個1.9GB大小的文件,此時剩余空間是0.1GB
3、用mklink命令給這個1.9GB大小的文件建立了一個硬連接
4、檢查這個分區(qū)的剩余空間,還是0.1GB,但是如果用資源管理器看test目錄的屬性,會發(fā)現(xiàn)有2個文件,總大小是3.8GB(整個分區(qū)才2GB,能夠容納3.8GB大小的文件嗎?顯然不可能了)
還是針對上述的例子,如果我們把原始的文件gb.txt刪除以后,link.txt文件還是會繼續(xù)存在的,且內(nèi)容就是source.txt的文件內(nèi)容。也就是說,我們刪除gb.txt,實際上刪除的僅僅是這種連接關(guān)系,文件本身還是沒有被操作的。
關(guān)于硬連接,最后一個需要介紹的內(nèi)容是:當硬連接建立以后,硬連接雙方任何一個對象被修改,都會造成對應(yīng)的連接對象被修改。例如上面的例子:如果修改了link.txt,那么gb.txt文件也會同步被修改,反之亦然。這一點和SHELL層面的快捷方式不同,SHELL層面的快捷方式文件LNK僅僅是一個指示關(guān)系,修改LNK文件并不影響LNK文件指向的對象,修改LNK文件指向的對象也不會影響LNK文件。 1.節(jié)省硬盤空間。同樣的文件,只需要維護硬連接關(guān)系,不需要進行多重的拷貝,這樣可以節(jié)省硬盤空間。
2.重命名文件。重命名文件并不需要打開該文件,只需改動某個目錄項的內(nèi)容即可。
3.刪除文件。刪除文件只需將相應(yīng)的目錄項刪除,該文件的鏈接數(shù)減1,如果刪除目錄項后該文件的鏈接數(shù)為零,這時系統(tǒng)才把真正的文件從磁盤上刪除。
4.文件更新。如果涉及文件更新,只需要先在WinSxS目錄里面下載好一個新版本,然后修改Windows\System32下面同名文件的硬連接關(guān)系,從舊版本的硬連接指向新版本的硬連接,這樣就能夠快速的完成文件的更新工作,而不需要進行文件的復(fù)制,速度也會快不少。
5.卸載補丁。遇到需要補丁卸載的情況,只需要把硬連接指向改為舊版本就可以了,沒有文件替換的問題。而且建立了硬連接關(guān)系的文件之間的修改是同步的,因此只要有一方被修改了,另一方也會得到修改。
篇幅關(guān)系,不再贅述。
Linux 鏈接分兩種,一種被稱為硬鏈接(Hard Link),另一種被稱為符號鏈接(Symbolic Link)。默認情況下,ln 命令產(chǎn)生硬鏈接。
通俗一點理解,可以把硬鏈接當成源文件的副本,他和源文件一樣的大小但是事實上卻不占任何空間。
符號鏈接可以理解為類似 windows 一樣的快捷方式。
硬連接指通過索引節(jié)點來進行連接。
在 Linux 的文件系統(tǒng)中,保存在磁盤分區(qū)中的文件不管是什么類型都給它分配一個編號,稱為索引節(jié)點號(Inode Index)。
在 Linux 中,多個文件名指向同一索引節(jié)點是存在的。一般這種連接就是硬連接。
硬連接的作用是允許一個文件擁有多個有效路徑名,這樣用戶就可以建立硬連接到重要文件,以防止“誤刪”的功能。其原因如上所述,因為對應(yīng)該目錄的索引節(jié)點有一個以上的連接。只刪除一個連接并不影響索引節(jié)點本身和其它的連接,只有當最后一個連接被刪除后,文件的數(shù)據(jù)塊及目錄的連接才會被釋放。也就是說,文件真正刪除的條件是與之相關(guān)的所有硬連接文件均被刪除。
硬鏈接文件有兩個限制
對于硬鏈接文件進行讀寫和刪除操作的時候,結(jié)果和符號鏈接相同。但是如果我們刪除硬鏈接文件的源文件,硬鏈接文件仍存在,而且保留了原有的內(nèi)容。
另外一種連接稱之為符號連接(Symbolic Link),也叫軟連接。軟鏈接文件有類似于 Windows 的快捷方式。它實際上是一個特殊的文件。在符號連接中,文件實際上是一個文本文件,這個文件包含了另一個文件的路徑名。
可以是任意文件或目錄,也可以鏈接不同文件系統(tǒng)的文件。甚至可以鏈接不存在的文件,這就產(chǎn)生一般稱為“斷裂”的問題(現(xiàn)象),還可以不斷的循環(huán)鏈接自己。
在對符號鏈接進行讀寫操作的時候,系統(tǒng)會自動把該操作轉(zhuǎn)換為對源文件的操作。但是刪除鏈接文件時,系統(tǒng)僅僅刪除符號鏈接文件,而不刪除源文件本身。
從上面的結(jié)果中可以看出,硬連接文件 f2 與原文件 f1 的 inode 節(jié)點相同,均為 7722708,然而符號連接文件的 inode 節(jié)點不同。
通過上面的測試可以看出:當刪除原始文件 f1 后,硬連接 f2 不受影響,但是符號連接 f1 文件無效
符號鏈接(symbolic link)在建立的時候建立了一個新的 inode,并記錄了指向源文件 inode 的路徑。所以 symbolic 的 inode number 跟原始檔案的 inode number 是不一樣的。這也是為什么 symbolic link 能夠跨越不同文件系統(tǒng)的原因。
符號鏈接建立了新的 inode number,所以它是一個真實的文件并占有一定的磁盤空間。另外對 symbolic link 的操作除了刪除都會直接對源文件進行操作。
hard link 的 inode number 跟源文件的 inode number 是一樣的。因為一個文件系統(tǒng)有著相同的 inode number,所以 hard link 是不可以跨文件系統(tǒng)創(chuàng)建的。也可以將 hard link 理解為不是一個文件,把它看成是同一個 inode 的別名,建立 hard link 后他和源文件互為別名,刪除其中任何一個,inode 都不會釋放。只有指向同一 inode 的文件名都刪除后,inode 才釋放。hard link 實際上是不占空間的。
硬鏈接:新建的文件是已經(jīng)存在的文件的一個別名,當原文件刪除時,新建的文件仍然可以使用.\x0d\x0a軟鏈接:也稱為符號鏈接,新建的文件以“路徑”的形式來表示另一個文件,和Windows的快捷方式十分相似,新建的軟鏈接可以指向不存在的文件.\x0d\x0a下面詳細介紹一下硬鏈接和軟連接之間的區(qū)別.\x0d\x0a1.硬鏈接和原來的文件沒有什么區(qū)別,而且共享一個 inode 號(文件在文件系統(tǒng)上的唯一標識);而軟鏈接不共享 inode,也可以說是個特殊的 inode,所以和原來的 inode 有區(qū)別。\x0d\x0a2.若原文件刪除了,則該軟連接則不可以訪問,而硬連接則是可以的。\x0d\x0a3.由于符號鏈接的特性,導(dǎo)致其可以跨越磁盤分區(qū),但硬鏈接不具備這個特性.\x0d\x0a另外在轉(zhuǎn)載一下網(wǎng)上的介紹.\x0d\x0a硬鏈接(hard link) ln\x0d\x0aUNIX文件系統(tǒng)提供了一種將不同文件鏈接至同一個文件的機制,稱這種機制為鏈接。它可以使得單個程序?qū)ν晃募褂貌煌拿帧_@樣的好處是文件系統(tǒng)只存在一個文件的副本。系統(tǒng)簡單地通過在目錄中建立一個新的登記項來實現(xiàn)這種連接。該登記項具有一個新的文件名和要連接文件的inode號(inode與原文件相同)。不論一個文件有多少硬鏈接,在磁盤上只有一個描述它的inode,只要該文件的鏈接數(shù)不為0,該文件就保持存在。硬鏈接不能對目錄建立硬鏈接!\x0d\x0a硬連接是直接建立在節(jié)點表上的(inode),建立硬連接指向一個文件的時候,會更新節(jié)點表上面的計數(shù)值。舉個例子,一個文件被連接了兩次(硬連接),這個文件的計數(shù)值是3,而無論通過3個文件名中的任何一個訪問,效果都是完全一樣的,但是如果刪除其中任意一個,都只是把計數(shù)值減1,不會刪除實際的內(nèi)容的,(任何存在的文件本身就算是一個硬連接)只有計數(shù)值變成0也就是沒有任何硬連接指向的時候才會真實的刪除內(nèi)容。\x0d\x0a軟鏈接(symbolic link) ln-s\x0d\x0a把符號鏈接稱為軟鏈接,它是指向另一個文件的特殊文件,這種文件的數(shù)據(jù)部分僅包含它所要鏈接文件的路徑名。軟鏈接是為了克服硬鏈接的不足而引入的,軟鏈接不直接使用inode號作為文件指針,而是使用文件路徑名作為指針(軟鏈接:文件名 + 數(shù)據(jù)部分--目標文件的路徑名)。軟件有自己的inode,并在磁盤上有一小片空間存放路徑名。因此,軟鏈接能夠跨文件系統(tǒng),也可以和目錄鏈接!其二,軟鏈接可以對一個不存在的文件名進行鏈接,但直到這個名字對應(yīng)的文件被創(chuàng)建后,才能打開其鏈接。\x0d\x0a
在cmd里用mklink命令
說明:
創(chuàng)建符號鏈接。
MKLINK
[[/D]
|
[/H]
|
[/J]]
Link
Target
/D
創(chuàng)建目錄符號鏈接。默認為文件
符號鏈接。
/H
創(chuàng)建硬鏈接,而不是符號鏈接。
/J
創(chuàng)建目錄聯(lián)接。
Link
指定新的符號鏈接名稱。
Target
指定新鏈接引用的路徑
(相對或絕對)。
網(wǎng)站名稱:windows系統(tǒng)硬鏈接的簡單介紹
轉(zhuǎn)載來于:http://chinadenli.net/article45/dsshghi.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、用戶體驗、外貿(mào)建站、營銷型網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)