linux_鏈接文件


鏈接概念:

       分為軟鏈接和硬鏈接,文件類型為 l

       硬鏈接: ln 源文件 目標文件

       軟鏈接: ln -s 源文件 目標文件(目標文件不能事先存在)

ln -s /root/ /tmp/root    # 給 /root 目錄創建一個軟鏈接到 /tmp目錄下

readlink /tmp/root        # 指出鏈接鏈向地址

touch test.sh    # 創建測試數據

ln test.sh /tmp/test.sh    # 創建硬鏈接

ll -i test.sh  /tmp/test.sh     # 檢查兩個文件的i節點

  

硬鏈接:

  硬鏈接是通過索引節點來進行鏈接,在linux系統中,多個文件名指向同一個索引節點是正常且允許的,這種情況的文件被稱為硬鏈接,硬鏈接相當於文件的另外一個入口,建立硬鏈接防止誤刪,有備份作用

ln /etc/hosts /tmp/oldboy.host          #對於這個文件,創建一個硬鏈接,也可以說創建了一個文件新的入口 /tmp/oldboy.host

 

鏈接知識總結:

  1. 具有相同inode節點號的多個文件互為硬鏈接文件,創建了硬鏈接相當於文件實體多了入口
  2. 只有刪除源文件及對應的所有對應的硬鏈接文件,文件實體才會被刪除,刪除源文件的其中一個或幾個硬鏈接,文件實體不會刪除。當刪除成功時候,該文件位置沒有被重新占用或fsck檢查之前,文件數據是有可能恢復
  3. 通過給文件創建硬鏈接,防止重要文件被誤刪
  4. 硬鏈接文件時普通文件,可以被rm刪除
  5. 靜態文件(沒有進程進行調用), i_link 為0的時候,文件將被刪除
  6. 刪除源文件,軟鏈接文件依舊存在,但是找不到文件,會紅白閃爍
  7. 多個軟鏈接指向同一個文件,單這些軟鏈接inode不同,屬於不同文件
  8. 軟鏈接的文件類型為l,硬鏈接文件類型和源文件一樣

對文件鏈接:

  1. 文件可以創建硬鏈接,增加了文件的入口,但是創建硬鏈接不能跨分區

  2. 文件可以創建軟鏈接,但只能在同級目錄,出來同級目錄失效

  3. 其實文件名本身就是個硬鏈接,也是文件入口

對於目錄鏈接

  1. 目錄不能創建硬鏈接,目錄可以創建軟鏈接
  2. 目錄的軟鏈接在生產場景經常使用,硬鏈接少用
  3. 每個目錄下都會有兩個硬鏈接, . 當前目錄, .. 上級目錄

 

鏈接總結: 

  

  1. 為文件創建硬鏈接,增加文件讀數據入口;為目錄創建軟鏈接,可以直接通過軟鏈接進入目錄

  2. 刪除源文件名,只要還有該源文件的硬鏈接在,通過硬鏈接還是可以訪問到數據,並沒有被刪除,為什么?

   

    當 i_link = 0 和 i_count = 0 的時候,就像把文件數據關進了小黑屋,被回收了,就刪除了

  3. 刪除軟鏈接,對源文件沒有任何的影響,刪除源文件名,指向該源文件的軟鏈接失效

  4. 硬鏈接 指向的inode相同,軟鏈接有自己的 inode 和block

  

 


免責聲明!

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



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