共享檔案 硬鏈結和軟鏈結

2021-08-28 12:17:27 字數 1942 閱讀 2920

檔案共享使多個使用者(程序)共享同一份檔案,系統中只需保留該檔案的乙份副本。如果系統不能提供共享功能,那麼每個需要該檔案的使用者都要有各自的副本,會造成對儲存空間的極大浪費。隨著計算機技術的發展,檔案共享的範圍已由單機系統發展到多機系統,進而通過網路擴充套件到全球。這些檔案的分享是通過分布式檔案系統、遠端檔案系統、分布式資訊系統實現的。這些系統允許多個客戶通過c/s模型共享網路中的伺服器檔案。

現代常用的兩種檔案共享方法有:

在樹形結構的目錄中,當有兩個或多個使用者要共享乙個子目錄或檔案時,必須將共享檔案或子目錄鏈結到兩個或多個使用者的目錄中,才能方便地找到該檔案,如圖4-7所示。

圖4-7  基於索引結點的共享方式

在這種共享方式中引用索引結點,即諸如檔案的實體地址及其他的檔案屬性等資訊,不再是放在目錄項中,而是放在索引結點中。在檔案目錄中只設定檔名及指向相應索引結點的指標。在索引結點中還應有乙個鏈結計數count,用於表示鏈結到本索引結點(亦即檔案) 上的使用者目錄項的數目。當count=2時,表示有兩個使用者目錄項鍊接到本檔案上,或者說是有兩個使用者共享此檔案。

當使用者a建立乙個新檔案時,它便是該檔案的所有者,此時將count置為1。當有使用者 b要共享此檔案時,在使用者b的目錄中增加乙個目錄項,並設定一指標指向該檔案的索引結點。此時,檔案主仍然是使用者a,count=2。如果使用者a不再需要此檔案,不能將檔案直接刪除。因為,若刪除了該檔案,也必然刪除了該檔案的索引結點,這樣便會便使用者b的指標懸空,而使用者b則可能正在此檔案上執行寫操作,此時使用者b會無法訪問到檔案。因此使用者a不能刪除此檔案,只是將該檔案的count減1,然後刪除自己目錄中的相應目錄項。使用者b仍可以使用該檔案。當count=0時,表示沒有使用者使用該檔案,系統將負責刪除該檔案。如圖4-8給出了使用者b鏈結到檔案上的前、後情況。

為使使用者b能共享使用者a的乙個檔案f,可以由系統建立乙個link型別的新檔案,也取名為f,並將檔案f寫入使用者b的目錄中,以實現使用者b的目錄與檔案f的鏈結。在新檔案中只包含被鏈結檔案f的路徑名。這樣的鏈結方法被稱為符號鏈結。

新檔案中的路徑名則只被看做是符號鏈,當使用者b要訪問被鏈結的檔案f且正要讀 link類新檔案時,作業系統根據新檔案中的路徑名去讀該檔案,從而實現了使用者b對檔案 f的共享。

在利用符號鏈方式實現檔案共享時,只有檔案的擁有者才擁有指向其索引結點的指標。而共享該檔案的其他使用者則只有該檔案的路徑名,並不擁有指向其索引結點的指標。這樣,也就不會發生在檔案主刪除一共享檔案後留下一懸空指標的情況。當檔案的擁有者把乙個共享檔案刪除後,其他使用者通過符號鏈去訪問它時,會出現訪問失敗,於是將符號鏈刪除,此時不會產生任何影響。當然,利用符號鏈實現檔案共享仍然存在問題,例如:乙個檔案釆用符號鏈方式共享,當檔案擁有者將其刪除,而在共享的其他使用者使用其符號鏈結訪問該檔案之前,又有人在同一路徑下建立了另乙個具有同樣名稱的檔案,則該符號鏈將仍然有效,但訪問的檔案已經改變,從而導致錯誤。

在符號鏈的共享方式中,當其他使用者讀共享檔案時,需要根據檔案路徑名逐個地查詢目錄,直至找到該檔案的索引結點。因此,每次訪問時,都可能要多次地讀盤,使得訪問檔案的開銷變大並增加了啟動磁碟的頻率。此外,符號鏈的索引結點也要耗費一定的磁碟空間。符號鏈方式有乙個很大的優點,即網路共享只需提供該檔案所在機器的網路位址以及該機器中的檔案路徑即可。

上述兩種鏈結方式都存在乙個共同的問題,即每個共享檔案都有幾個檔名。換言之,每增加一條鏈結,就增加乙個檔名。這實質上就是每個使用者都使用自己的路徑名去訪問共享檔案。當我們試圖去遍歷整個檔案系統時,將會多次遍歷到該共享檔案。

硬鏈結和軟鏈結都是檔案系統中的靜態共享方法,在檔案系統中還存在著另外的共享需求,即兩個程序同時對同乙個檔案進行操作,這樣的共享可以稱為動態共享。

軟鏈結和硬鏈結

又叫符號鏈結,這個檔案包含了另乙個檔案的路徑名。可以是任意檔案或目錄,可以鏈結不同檔案系統的檔案。鏈結檔案甚至可以鏈結不存在的檔案,這就產生一般稱之為 斷鏈 的問題 或曰 現象 鏈結檔案甚至可以迴圈鏈結自己。類似於程式語言中的遞迴。軟連線的格式是 ln s 目標檔名 鏈結名 在對符號檔案進行讀或寫操...

硬鏈結和軟鏈結

1.linux 鏈結概念 linux 鏈結分兩種,一種被稱為硬鏈結 hard link 另一種被稱為 符號鏈結 symbolic link 預設情況下,ln命令產生硬鏈結。硬連線 硬連線指通過索引節點來進行連線。在 linux 的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配乙個編號,...

硬鏈結和軟鏈結

在linux中除了程序之外都是檔案,目錄是特殊的檔案,目錄記錄了其他檔案的檔名。linux檔案被分為兩部分 元資料 檔案的屬性資料 和使用者資料 實際的資料 在linux中通過檔名開啟檔案。檢視檔案的inode號可以使用stat或者ls i命令。軟連線和硬鏈結 硬鏈結是兩個檔名指向同乙個inode,...