IT貓撲網:您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機版|論壇轉貼|軟件發(fā)布

您當前所在位置: 首頁操作系統LINUX → 深入理解硬鏈接和軟鏈接

深入理解硬鏈接和軟鏈接

時間:2015-06-28 00:00:00 來源:IT貓撲網 作者:網管聯盟 我要評論(0)

  UNIX和Linux都提供了鏈接命令ln。顧名思義,ln是將兩個文件名(此說法不大準確)彼此鏈接起來,使得用戶無論使用哪一個文件名都可訪問到同一 文件。這是我們用ln命令所要達到的目的,但是從技術上講,只有軟鏈接是鏈接兩個文件名,硬鏈接不在此列之中。要透徹理解鏈接的含義,就必須要分清文件與 文件名的區(qū)別。而要區(qū)分文件與文件名,我們就得知道文件系統如何管理文件??此坪芷胀ǖ拿?,其技術背景卻一點兒也不簡單。

  文件系統如何管理文件涉及范圍太大,不可能也不必要在此全部敘述,但我們只需知道以下技術要點即可。在Linux中,文件的外延很大,我們常識中的"文件 "(例如一篇文檔等)是文件, 目錄、設備等也都是文件。這些文件種類繁多,數量巨大,萬一重名怎么辦,文件系統是如何區(qū)分并管理它們的呢?限制重名?這當然不行!我們來看看Linux 是如何做的。原來Linux的文件系統為每一個文件分配了一個我們稱為索引節(jié)點(Inode)的數據結構,在這個索引節(jié)點內有一個全系統獨一無二的索引節(jié) 點號,文件系統正是靠這個索引節(jié)點號來識別一個文件。另外文件系統用來管理文件的所有信息都包含在索引節(jié)點之中。

  好了,給每個文件分配一個唯一的number,文件系統就知道某個文件究竟是張三的文件還是李四的文件。但是文件的真正使用者——我們人類也要用該 number去識別文件嗎?呵呵,若此為真,不知是人玩電腦還是電腦玩人羅。因此我們要用我們的方式去區(qū)分各個文件,給每一個文件起一好聽易記的名字,同 一地點(即同一目錄)不能有兩個名字一樣的文件。地點若不同,允許重名。至此,人類有人類識別文件的方法,電腦(文件系統)有電腦的做法,喔喔,問題又來 了,二者是要"水火不容"呢,還是"溝通無限"呢?這還用問,當然是后者啦。

  OK,既然要"溝通","鏈接"自然而然就提出來了。繞了個大圈,終于得以言歸正傳,有了上述的背景知識,不管是硬鏈接還是軟鏈接對于我們來說已是板上魚 肉。所謂硬鏈接(hard link, 也稱鏈接[1])就是一個文件的一個或多個文件名。再說白點,所謂鏈接無非是把我們人類使用的文件名和電腦(文件系統)使用的節(jié)點號鏈接起來。因此我們可 以用多個文件名與同一個文件進行鏈接,這些文件名可以在同一目錄或不同目錄。一個文件有幾個文件名(用ln命令實現多個文件名),我們就說該文件的鏈接數 為幾。由定義可知,此鏈接數可以是1, 這表明該文件只有一個文件名。

  需要特別指出的是,在info ln的幫助信息中所說的硬鏈接與我的理解是有差別的,先看info是如何講硬鏈接。"A "hard link" is another name for an existing file; the link and the original are indistinguishable."(一個"硬鏈接"是一個現有文件的別名;鏈接文件與被鏈接文件是無法區(qū)別的。)哇喔,好象亂套了,誰對誰錯?誰都 沒錯,二者角度不同。Info是就ln命令而論的"硬鏈接",注意了,info中的硬鏈接也是打了雙引號的,我估計此有特殊含義。"鏈接文件與被鏈接文件 是無法區(qū)別的",沒錯,因為它們都指向同一個索引節(jié)點嘛?,F在我與info主要差別在于,我認同而info不認同以下觀點:對于一個擁有文件名的文件,在 沒有用過ln命令的情況下,該文件仍存在硬鏈接,且鏈接數為1。理論需要實踐來證明,在Linux中用ls –l命令獲得該目錄下文件的詳細信息,格式如下:

  -rwxr-xr-x 1 root root 1024 Apr 30 17:06 filename

  上述格式中黑體加下劃線的"1"代表文件名filename的文件的鏈接數為1。做個實驗,在同一目錄(不同目錄也行)使用ln命令:

  ln filename filename2

  然后再使用ls –l命令,會得到下面的信息:

  -rwxr-xr-x 2 root root 1024 Apr 30 17:06 filename

  -rwxr-xr-x 2 root root 1024 Apr 30 17:06 filename2

  很明顯,原來文件名為filename的文件現在擁有了兩個文件名,鏈接數變?yōu)?, 除此之外其它一切信息都沒變,所以說"鏈接文件與被鏈接文件是無法區(qū)別的"。下面的事實讓我懷疑有沒有必要用ln產生新的硬鏈接:無論使用任一文件名對文 件的任何改動,該文件的所有直接或間接[2]鏈接文件都會隨之而改變,最后所有信息都保持一致。

  將文件名與索引節(jié)點分開,然后采用硬鏈接的技術使得管理文件變得更方便,效率更高。例如重命名,進程并不需要打開該文件,只需改動某個目錄項的內容即可。 還有刪除一個文件也是如此,將相應的目錄項刪除,該文件的鏈接數減1,如果刪除目錄項后該文件的鏈接數為零,這時系統才把真正的文件從磁盤上刪除。

  認識了硬鏈接究竟是怎么一回事,理解硬鏈接的兩個限制就容易多了。

  1、不允許給目錄創(chuàng)建硬鏈接;

  2、只有在同一文件系統中的文件之間才能創(chuàng)建鏈接。

  篇幅關系,不再贅述。

  為了克服以上限制,引入符號鏈接(symbolic link,也稱軟鏈接)。符號鏈接實際上是一種特殊的文件類型,這種文件包含了另一個文件的任意一個路徑名。這個路徑名指向位于任意一個文件系統的任意文 件,甚至可以指向一個不存在的文件。系統會自動把對符號鏈接的大部分操作(如讀、寫等)變?yōu)閷υ次募牟僮?,但某些操?如刪除等)就會直接在符號鏈接上 完成。在ln中加選項-s便產生一個文件的符號鏈接。?? 總之:硬鏈接就是讓多個不在或者同在一個目錄下的文件,同時能夠修改同一個文件,其中一個修改后,所有有與其有硬鏈接的文件都一起修改了。?

  軟鏈接就是與window中的快捷鍵一樣。

關鍵詞標簽:硬鏈接,軟鏈接

相關閱讀

文章評論
發(fā)表評論

熱門文章 安裝紅帽子RedHat Linux9.0操作系統教程 安裝紅帽子RedHat Linux9.0操作系統教程 Tomcat9.0如何安裝_Tomcat9.0環(huán)境變量配置方法 Tomcat9.0如何安裝_Tomcat9.0環(huán)境變量配置方法 多種操作系統NTP客戶端配置 多種操作系統NTP客戶端配置 Linux操作系統修改IP Linux操作系統修改IP

相關下載

    人氣排行 Linux下獲取CPUID、硬盤序列號與MAC地址 dmidecode命令查看內存型號 linux tc實現ip流量限制 安裝紅帽子RedHat Linux9.0操作系統教程 linux下解壓rar文件 lcx.exe、nc.exe、sc.exe入侵中的使用方法 Ubuntu linux 關機、重啟、注銷 命令 查看linux服務器硬盤IO讀寫負載