Linux檔案鏈結命令 軟連線與硬鏈結

2021-08-25 15:50:15 字數 3195 閱讀 5529

ln命令

該命令在檔案之間建立鏈結。這種操作實際上是給系統中已有的某個檔案指定另外乙個可用於訪問它的名稱。對於這個新的檔名,我們可以為之指定不同的訪問許可權,以控制對資訊的共享和安全性的問題。 如果鏈結指向目錄,使用者就可以利用該鏈結直接進入被鏈結的目錄而不用打一大堆的路徑名。而且,即使我們刪除這個鏈結,也不會破壞原來的目錄。

語法:ln [選項] 目標 [鏈結名]

ln [選項] 目標 目錄

鏈結有兩種,一種被稱為硬鏈結(hard link),另一種被稱為符號鏈結(symbolic link)。建立硬鏈結時,鏈結檔案和被鏈結檔案必須位於同乙個檔案系統中,並且不能建立指向目錄的硬鏈結。而對符號鏈結,則不存在這個問題。預設情況下,ln產生硬鏈結。

在硬鏈結的情況下,引數中的「目標」被鏈結至[鏈結名]。如果[鏈結名]是乙個目錄名,系統將在該目錄之下建立乙個或多個與「目標」同名的鏈結檔案,鏈結檔案和被鏈結檔案的內容完全相同。如果[鏈結名]為乙個檔案,使用者將被告知該檔案已存在且不進行鏈結。如果指定了多個「目標」引數,那麼最後乙個引數必須為目錄。

如果給ln命令加上- s選項,則建立符號鏈結。如果[鏈結名]已經存在但不是目錄,將不做鏈結。[鏈結名]可以是任何乙個檔名(可包含路徑),也可以是乙個目錄,並且允許它與「目標」不在同乙個檔案系統中。如果[鏈結名]是乙個已經存在的目錄,系統將在該目錄下建立乙個或多個與「目標」同名的檔案,此新建的檔案實際上是指向原「目標」的符號鏈結檔案。

對於乙個檔案來說,有唯一的索引接點(inode)與之對應,而對於乙個索引接點號,卻可以有多個檔名與之對應。因此,在磁碟上的同乙個檔案可以通過不同的路徑去訪問該檔案。注意在linux下是一切皆檔案的啊,資料夾、新加的硬碟 ...都可以看著檔案來處理的啊。

連線有軟連線和硬連線(hard link)之分的,軟連線(symbolic link)又叫符號連線。符號連線相當於windows下的快捷方式。

*************************** 不可以對 資料夾/目錄 建立硬連線的,我們通常用的還是軟連線比較多。

eg:ln -s source dist # 建立軟連線

ln source dist # 建立硬連線

它們到底有什麼區別呢?上次也好好的看了,好象同檔案系統的結構有一定的關係,沒怎麼太詳細的研究下次看明白了再加上。

----------------------

軟鏈結實際上只是一段文字,裡面包含著它所指向的檔案的名字,系統看到軟鏈結後自動跳到對應的檔案位置處進行處理;相反,硬鏈結為檔案開設乙個新的目錄項,硬鏈結與檔案原有的名字是平權的,在linux看來它們是等價的。由於這個原因,硬鏈結不能連線兩個不同檔案系統上的檔案。

軟連線與windows下的快捷方式類似

至於硬連線,舉個例子說吧,你把dir1/file1硬連線到dir2/file2, 就是在dir2下建立乙個dir1/file1的映象檔案file2,它與file1是占用一樣大的空間的,並且改動兩者中的乙個,另乙個也會發生同樣的改動.

軟連線和硬連線可以這樣理解:

硬連線就像乙個檔案有多個檔名,

軟連線就是產生乙個新檔案(這個檔案內容,實際上就是記當要鏈結原檔案路徑的資訊),這個檔案指向另乙個檔案的位置,

硬連線必須在同一檔案系統中,而軟連線可以跨檔案系統

硬連線 :源檔名和鏈結檔名都指向相同的實體地址,目錄不能夠有硬連線,檔案在磁碟中只有乙個複製,可以節省硬碟空間,由於刪除檔案要在同乙個索引節點屬於唯一的連線時才能成功,因此可以防止不必要的誤刪除軟連線(符號連線)用ln -s命令建立檔案的符號連線,符號連線是linux特殊檔案的一種,作為乙個檔案,它的資料是它所連線的檔案的路徑名,類似於硬體方式,******可以刪除原始檔案 而連線檔案仍然存在。********

本文試圖清晰徹底的解釋軟鏈結和硬鏈結檔案的區別

一 鏈結檔案

鏈結有兩種方式,軟鏈結和硬鏈結。

1 軟鏈結檔案

軟鏈結又叫符號鏈結,這個檔案包含了另乙個檔案的路徑名。可以是任意檔案或目錄,可以鏈結不同檔案系統的檔案。

**********鏈結檔案甚至可以鏈結不存在的檔案,這就產生一般稱之為"斷鏈"的問題(或曰「現象"),鏈結檔案甚至可以迴圈鏈結自己。類似於程式語言中的遞迴。

用ln -s 命令可以生成乙個軟連線,如下:

[root@linux236 test]# ln -s source_file softlink_file

在對符號檔案進行讀或寫操作的時候,系統會自動把該操作轉換為對原始檔的操作,但刪除鏈結檔案時,系統僅僅刪除鏈結檔案,而不刪除原始檔本身。

2 硬鏈結檔案

info ln 命令告訴您,硬鏈結是已存在檔案的另乙個名字(a "hard link" is another name for an existing file),這多少有些令人困惑。硬連線的命令是

ln -d existfile newfile

硬鏈結檔案有兩個限制

1)、不允許給目錄建立硬鏈結;

2)、只有在同一檔案系統中的檔案之間才能建立硬鏈結。

***********對硬鏈結檔案進行讀寫和刪除操作時候,結果和軟鏈結相同。但如果我們刪除硬鏈結檔案的原始檔,硬鏈結檔案仍然存在,而且保留了願有的內容。

***********這時,系統就「忘記」了它曾經是硬鏈結檔案。而把他當成乙個普通檔案。

二 兩者之間的區別

硬連線指通過索引節點來進行的連線。在linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配乙個編號,稱為索引節點號(inode number)。

在linux中,多個檔名指向同一索引節點是存在的。一般這種連線就是硬連線。*******硬連線的作用是允許乙個檔案擁有多個有效路徑名,這樣使用者就可以建立硬連線到重要

檔案,以防止「誤刪」的功能。其原因如上所述,因為對應該目錄的索引節點有乙個以上的連線。只刪除乙個連線並不影響索引節點本身和其它的連線,只有當最後乙個

連線被刪除後,檔案的資料塊及目錄的連線才會被釋放。也就是說,檔案才會被真正刪除。

軟鏈結檔案有點類似於windows的快捷方式。它實際上是特殊檔案的一種。在符號連線中,檔案實際上是乙個文字檔案,其中包含的有另一檔案的位置資訊。

三 個人體會

軟鏈結是另乙個檔案,作用可以理解為乙個指標,******作用在這個檔案上的操作除了刪除都直接轉向實際指向檔案,由於是乙個真實的檔案所以占用磁碟空間

硬鏈結可以認為不是乙個檔案,它只是實際檔案的乙個別名,它的作用是防止真實檔案被誤操作,給乙個檔案建立硬鏈結後,他們互為別名,刪除其中任意乙個,

這樣用rm命令只會刪除該別名,實際檔案並不會被刪除。只有鏈結數為0時,才會刪除原始檔案。

Linux檔案的硬鏈結與軟連線

linux檔案系統下有兩個特殊的檔案,分別叫硬鏈結檔案和軟連線檔案。硬鏈結檔案是一種引用計數的運用,軟連線可以理解為windows下面的快捷方式。lzk localhost stat file file file size 32 blocks 8 io block 4096 regular file...

linux硬鏈結與軟連線

linux通過鏈結來為檔案向使用者程式提供多個入口,linux鏈結有兩種 一種稱為硬鏈結 hard link 另一種稱為符號鏈結 symbolic link 也常被稱為軟鏈結,預設情況下,命令產生硬鏈結。硬鏈結通過索引節點 inode 進行鏈結,這樣多個檔名指向同乙個索引節點,也就使得乙個檔案可以擁...

Linux 軟連線與硬鏈結

檔案都有檔名與資料,這在 linux 上被分成兩個部分 使用者資料 user data 與元資料 metadata 使用者資料,即檔案資料塊 data block 資料塊是記錄檔案真實內容的地方 而元資料則是檔案的附加屬性,如檔案大小 建立時間 所有者等資訊。在 linux 中,元資料中的 inod...