筆試總結(3)

Linux的硬鏈接和軟鏈接:

首先什麼是鏈接?
     鏈接操作實際上是給系統中已有的某個文件指定另外一個可用於訪問它的名稱。對於這個新的文件名,我們可以爲之指定不同的 訪問權限 ,以控制對信息的共享和安全性的問題。 如果鏈接指向目錄,用戶就可以利用該鏈接直接進入被鏈接的目錄而不用打一大堆的路徑名。而且,即使我們刪除這個鏈接,也不會破壞原來的目錄。
硬鏈接
     硬鏈接只能引用同一文件系統中的文件。它引用的是文件在文件系統中的物理索引(也稱爲 inode)。當您移動或刪除原始文件時,硬鏈接不會被破壞,因爲它所引用的是文件的物理數據而不是文件在文件結構中的位置。硬鏈接的文件不需要用戶有訪問原始文件的權限,也不會顯示原始文件的位置,這樣有助於文件的安全。如果您刪除的文件有相應的硬鏈接,那麼這個文件依然會保留,直到所有對它的引用都被刪除。
軟鏈接(符號鏈接)
      軟連接,其實就是新建立一個文件,這個文件就是專門用來指向別的文件的(那就和windows 下的快捷方式的那個文件有很接近的意味)。軟連接產生的是一個新的文件,但這個文件的作用就是專門指向某個文件的,刪了這個軟連接文件,那就等於不需要這個連接,和原來的存在的實體原文件沒有任何關係,但刪除原來的文件,則相應的軟連接不可用(cat那個軟鏈接文件,則提示“沒有該文件或目錄“)。
 硬鏈接與軟鏈接的區別;

硬連接是不會建立inode的,他只是在文件原來的inode link count域再增加1而已,也因此硬鏈接是不可以跨越文件系統的。相反都是軟連接會重新建立一個inode,當然inode的結構跟其他的不一樣,他只是一個指明源文件的字符串信息。一旦刪除源文件,那麼軟連接將變得毫無意義。而硬鏈接刪除的時候,系統調用會檢查inode link count的數值,如果他大於等於1,那麼inode不會被回收。因此文件的內容不會被刪除。

硬鏈接實際上是爲文件建一個別名,鏈接文件和原文件實際上是同一個文件。可以通過ls -i來查看一下,這兩個文件的inode號是同一個,說明它們是同一個文件;而軟鏈接建立的是一個指向,即鏈接文件內的內容是指向原文件的指針,它們是兩個文件。

軟鏈接可以跨文件系統,硬鏈接不可以;軟鏈接可以對一個不存在的文件名(filename)進行鏈接(當然此時如果你vi這個軟鏈接文件,linux會自動新建一個文件名爲filename的文件),硬鏈接不可以(其文件必須存在,inode必須存在);軟鏈接可以對目錄進行連接,硬鏈接不可以。兩種鏈接都可以通過命令 ln 來創建。ln 默認創建的是硬鏈接。使用 -s 開關可以創建軟鏈接。

總結:

( 1 )軟連接可以跨文件系統,硬連接不可以

( 2 )硬連接不管有多少個,都指向的是同一個 I 節點,會把結點連接數增加,只要結點的連接數不是 0 ,文件就一直存在不管你刪除的是源文件還是連接的文件。只要有一個存在文件就存在。 當你修改源文件或者連接文件任何一個的時候,其他的文件都會做同步的修改。軟鏈接不直接使用 i 節點號作爲文件指針 , 而是使用文件路徑名作爲指針。所以刪除連接文件對源文件無影響,但是刪除源文件,連接文件就會找不到要指向的文件。軟鏈接有自己的 i 節點 , 並在磁盤上有一小片空間存放路徑名。

( 3 )軟連接可以對一個不存在的文件名進行連接 。

( 4 )軟連接可以對目錄進行連接。

算法的時間複雜度取決於:

待處理數據的狀態

問題的規模


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章