linux中軟鏈接和硬鏈接的區別與小結


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時,才會刪除原始文件
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM