Ⅰ linux 硬鏈接和軟鏈接的區別
為解決文件的共享使用,Linux系統引入了兩種鏈接:硬鏈接和軟鏈接。在Linux中,元數據中的inode號才是文件的唯一標識而非文件名,文件內容要通過inode號來尋找,猶如交通指示牌一樣,指示著數據找尋的方向。
硬鏈接(Hard Link)
A和B的硬鏈接,則A的目錄項中的inode節點號與B的目錄項中的inode節點號相同,即一個inode節點對應兩個不同的文件名,兩個文件名指向同一個文件,A和B對文件系統來說是完全平等的。如果刪除其中一個,對另外一個沒有任何影響。每增加一個文件名,inode節點上的鏈接數增加一,每刪除一個對應的文件名,inode節點上的鏈接數減一,直到為0,inode節點和對應的數據塊被回收。
註:文件和文件名是不同的東西,rm A刪除的只是A這個文件名,而A對應的數據塊只有在inode節點鏈接數減少為0的時候才會被系統回收。
軟鏈接(Soft Link)
A是B的軟鏈接,A的目錄項中的inode節點號與B的目錄項中的節點號不相同,A和B指向的是兩個不同的inode,繼而指向兩塊不同的數據塊。但是A的數據塊中存放的只是B的路徑名。A和B之間是主從關系,如果B被刪除了,A依然存在,但指向的是一個無效的鏈接。
Linux中軟鏈接和硬鏈接的區別和聯系:
概念不同:
軟鏈接可以理解成快捷方式,和原文件的inode號不一樣,它和Windows下的快捷方式的作用是一樣的,軟鏈接數據塊中記錄的亦是相對路徑指向。
硬鏈接和原文件對應一個inode,就是對應一個文件,可以理解成一個文件有幾個別名。
用法不同:
軟鏈接可以理解成快捷方式,也清楚知道原文件在哪裡。它和Windows下的快捷方式的作用是一樣的,和Windows一樣,刪除源文件,快捷方式也就無法使用了。
硬鏈接可以看成一個備份,但並沒有增加空間,因為文件就一個,這種可以防止源文件刪除後不能使用問題;同時也有局限性,不能對目錄和跨文件系統使用。
語法格式(ln):
硬鏈接:ln 源文件 鏈接名
軟鏈接:ln -s 源文件 鏈接名
注意:鏈接的源文件路徑要寫絕對路徑,否則會報錯。
Ⅱ linux怎麼將硬鏈接指向目錄
首先linux不能將硬鏈接指向目錄,硬連接自然你要先考慮軟連接跟硬連接區別,軟連接就相當於我們win中的快捷方式即如果你軟連接一個目錄只是一個目錄的快捷方式到指定位置,操作系統找這個快捷方式會直接找到真實目錄下的文件。但是硬連接的話,相當於鏡像的方式,你創建一個目錄的硬連接之後,操作系統需要把這個目錄下所有的文件都要做一次硬連接(復制一份過去),這樣操作系統在訪問這個鏈接的時候要不斷去遍歷,大大增加復雜度,而且很容易進入死循環。現在linux沒有很好支持這個 所以 不支持。
Ⅲ linux中,什麼是連結檔,鏈接,鏈接目錄
linux硬鏈接與軟鏈接
Linux鏈接概念
Linux鏈接分兩種,一種被稱為硬鏈接(HardLink),另一種被稱為符號鏈接(SymbolicLink)。默認情況下,ln命令產生硬鏈接。【硬連接】硬連接指通過索引節點來進行連接。
1).刪除符號連接f3,對f1,f2無影響;
2).刪除硬連接f2,對f1,f3也無影響;
3).刪除原文件f1,對硬連接f2沒有影響,導致符號連接f3失效;
4).同時刪除原文件f1,硬連接f2,整個文件會真正的被刪除。可參考《Linux就該這么學》了解更多Linux知識。
Ⅳ linux給文件創建硬鏈接
在了Linux下創建硬連接和軟連接(也就是符號連接)都是用ln命令,當使用ln命令時加上-s選項就表示創建的連接文件是一個軟連接,如果使用ln命令時不帶-s選項就表示創建的是一個硬連接。而ln命令的格式則是:ln 原文件 連接文件
比如如下命令是創建硬連接的,/home/testfile就是創建的硬連接文件,它連接到/root/testfile這個文件:
ln /root/testfile /home/testfile
下面的則是創建軟連接的,這次/home/testfile是一個軟連接文件:
ln -s /root/testfile /home/testfile
Ⅳ linux為什麼不能硬鏈接目錄
符號連接(軟連接)到一個目錄只是建立了一個新文件,而這個連接文件相當於原目錄的「快捷方式」。但是硬連接本身並不是一個實際的文件,只是在它所在的目錄下多了一條文件名記錄而已,這個文件名對應到原文件的inode,記住,它是和inode關聯的,而inode是和文件的內容相關,所以一個硬連接只能對應一個文件。如果想讓一個硬連接到一個目錄,就只能對這個目錄下的所有文件都建立硬連接,如果將來這個目錄下又有新文件了,就又要創建硬連接,所以說對目錄建立硬連接太復雜了,Linux目前是不支持硬連接目錄的,這是硬連接的原理所決定的。
Ⅵ Linux中硬鏈接文件和軟鏈接文件有什麼區別
linux系統中鏈接文件分為硬鏈接和軟鏈接(軟鏈接也叫符號鏈接)。硬鏈接和軟鏈接都是指向文件的一種方式,但兩者有不同的地方,主要有以下不同:
1.硬鏈接是創建一個指向block的inode,有防止誤刪除的功能。因為刪除一個文件,實際上是刪除inode信息,切斷了inode與block之間的聯系。當給一個文件做了硬鏈接之後,刪除文件時,只會減少文件的鏈接數,當鏈接數為0時,才會徹底刪除該文件。
軟鏈接類似windows系統的快捷方式,是一個完整的文件,有自己的inode和block,block的內容就是原文件的文件名。當原文件刪除後,軟鏈接就失效了,沒有防止誤刪除的功能。
2.文件的大小不一樣。由於硬鏈接是指向原文件的block,所以硬鏈接的文件大小和原文件大小是一致的。而軟鏈接是新的文件,block里是原文件的的文件名,所以軟鏈接文件的大小一般是4k,即一個block的大小。
3.硬鏈接不能給目錄做,不能跨分區做。軟鏈接則都可以。
創建硬鏈接命令:
ln
file
filenew
#file為原文件名,filenew為新文件名。
創建軟鏈接命令:
ln
-s
file
filenew
#file為原文件名,filenew為新文件名。
Ⅶ Linux下軟鏈接和硬鏈接的區別是什麼
要深入理解軟鏈接和硬鏈接,那麼得先理解文件系統;
所以我只能粗略解釋下軟鏈接和硬鏈接;
硬鏈接:大小和block以及inode號都相同; 那麼說明他們根本就是同一個文件; 打個比方: 從上海坐飛機去北京, 飛機可以直飛北京, 也可以先去紐約轉一圈到北京, 這個就不同的飛行路線就是路徑, 但是目的都是相同的---北京(文件位置);;;
軟鏈接: 大小和block以及inode號都不同, 那麼說明他們根本就不是同一個文件, 那麼軟鏈接存放的是什麼呢? 存放的就是如何從上海到北京的路線(比如是從上海到紐約然後目標是北京的路線); 所以它得先到上海然後才能坐飛機到北京;
從上面的飛機例子中可以得出一個特性: 硬鏈接必須是上海到北京; 即: 必須是同一個文件系統;
軟體可以是其他地方到上海然後坐飛機到北京; 可以他可以在不同的文件系統;
stat filename 這個命令記住; 看看Inode號, 就能知道硬鏈接和軟鏈接是什麼了; Inode對於文件系統非常重要; Inode是一個文件的元數據, 如果相同的; 那麼根本就是同一個文件;;;
所以硬鏈接不是文件的復制2份; 說實話我不知道快捷方式的原理, 因為我沒有去解讀過NTFS文件系統; 所以軟鏈接是不是快捷方式我不好說, 但是軟鏈接其實就是存放著另一個文件的路徑的文件;;
Ⅷ linux怎麼將一個文件夾鏈接到另一個文件夾上
ln -s bbb的文件目錄 ccc的文件目錄
In的功能是為某一個文件在另外一個位置建立一個同步的鏈接,命令最常用的參數是-s,具體用法是:
ln -s 源文件 目標文件
-s 是 symbolic的意思。
ln的鏈接有軟鏈接和硬鏈接兩種。
軟鏈接就是ln -s ** **,只會在選定的位置上生成一個文件的鏡像,不會佔用磁碟空間。
硬鏈接ln
** **,沒有參數-s,在選定的位置上生成一個和源文件大小相同的文件。
無論是軟鏈接還是硬鏈接,文件都保持同步變化。軟鏈接是可以跨分區的,但是硬鏈接只能在同一分區內。
(8)linux目錄硬鏈接擴展閱讀:
1、目錄不能建立硬鏈接,但可以建立軟鏈接。
ln-s
test_chk test_chk_ln
2、正確的刪除方式(刪除軟鏈接,但不刪除實際數據):
rm -rf ./test_chk_ln
3、錯誤的刪除方式:
rm -rf ./test_chk_ln/ (這樣就會把原來test_chk下的內容刪除)
4、用ls查看一個目錄時,發現有的文件後面有一個@的符號,那就是一個用ln命令生成的文件。用ls
-l命令去查看,就可以看到顯示的link的路徑。
Ⅸ 怎麼理解linux中的硬鏈接在實際工作中怎麼用
建立硬鏈接就是相當於給一個文件起別名。類比實際生活中,就像是給某個人取綽號。雖然硬鏈接名和源文件不一樣,但是二者都是指向同一個硬碟中的資源。硬鏈接在實際工作中應用遠沒有軟連接多:1)想讓一個文件在多個目錄下重復出現,但只佔用一份文件的空間,就用硬鏈接。2)針對一塊資源,如果想給不同的用戶開不同許可權,就用硬鏈接(結合修改許可權的chmod命令即可)。
硬鏈接也是使用ln命令,舉例:ln info info_h, 就是給源文件info創建了一個名為info_h的硬鏈接。
現在我也在黑馬程序員當老師,這方面都可以咨詢。官網視頻庫也有這些資料的視頻介紹。
Ⅹ linux 什麼是硬鏈接
硬鏈接(hard link):A是B的硬鏈接(A和B都是文件名),則A的目錄項中的inode節點號與B的目錄項中的inode節點號相同,即一個inode節點對應兩個不同的文件名,兩個文件名指向同一個文件,A和B對文件系統來說是完全平等的。如果刪除了其中一個,對另外一個沒有影響。每增加一個文件名,inode節點上的鏈接數增加一,每刪除一個對應的文件名,inode節點上的鏈接數減一,直到為0,inode節點和對應的數據塊被回收。註:文件和文件名是不同的東西,rm A刪除的只是A這個文件名,而A對應的數據塊(文件)只有在inode節點鏈接數減少為0的時候才會被系統回收。