查看论坛隐藏链接_软连接与硬链接的区别
點擊上方藍色“后端開發雜談”關注我們, 專注于后端日常開發技術分享
硬鏈接與軟連接的聯系與區別
文件都有文件名和數據, 這在Linux上被分為兩部分: 用戶數據(user data) 與 元數據(metadata). 用戶數據, 即文件數據塊( data block), 數據塊是記錄文件真實內容的地方; 元數據是文件的附加信息, 如文件大小, 創建時間, 所有者等信息. 在Linux中, 元數據中的inode號(inode是文件元數據的一部分但其實不包含文件名, inode號即索引節點號)才是文件的唯一標識而非文件名.
Linux系統中查看 inode 號可使用 stat 或 ls -i.
為了解決文件的共享使用, Linux系統引入了兩種鏈接: 硬鏈接(hard link)與軟連接(又稱符號鏈接,即soft link或symbolic link) 鏈接為Linux系統解決了文件的共享使用, 還帶來了隱藏文件路徑, 增加權限安全以及節省存儲等好處. 若一個inode號對應多個文件名, 則稱這些文件為硬鏈接. 換言之, 硬鏈接就是同一個文件使用了多個別名.
硬鏈接的特性:
文件有相同的inode及data block, 權限(ower, rwx)
只能對已存在的文件進行創建;
不能交叉文件系統進行硬鏈接的創建;
不能對目錄進行創建, 只可對文件創建;
刪除一個硬鏈接文件并不影響其他有相同inode號的文件
文件old.file與hard.link有著相同的inode號及文件權限. inode是隨著文件的存在而存在, 因此只有當文件存在時才可創建硬鏈接, 即當inode存在且鏈接計數器(Links)不為0時.
inode號僅在各文件系統下是唯一的, 當Linux掛載多個文件系統后將出現inode號重復的現象, 因此硬鏈接創建時不可跨文件系統.
硬鏈接不能對目錄創建是受限于文件系統的設計. 現Linux文件系統中的目錄均隱藏了兩個特殊的目錄: 當前目錄(.) 和 父目錄(..). 查看這兩個特殊目錄的inode號可知其實這兩個目錄就是兩個硬鏈接. 若系統允許對目錄創建硬鏈接, 則會產生目錄環.
. 目錄的硬鏈接數量的2 (當前目錄下的 . 和 在父目錄下的目錄) .. 目錄的硬鏈接數量是2+n n是當前目錄下的子目錄的個數
軟連接與硬鏈接不同, 若文件用戶數據塊中存放的內容是另一文件的路徑名的指向, 則該文件就是軟連接. 軟連接就是一個普通文件,只是 數據塊內容有點特殊. 軟連接有著自己的inode號以及用戶數據塊. 因此軟連接的創建與使用沒有類似硬鏈接的諸多限制:
軟連接有自己的文件屬性及權限等(數據塊的大小是0);
可對不存在的文件或目錄創建軟連接;
軟連接可交叉文件系統;
軟連接可對文件或目錄創建;
創建軟連接時, 鏈接計數i_nlink不會增加;
刪除軟連接并不影響被指向的文件, 但若被指向的原文件被刪除, 則相關軟連接被稱為死鏈接(即dangling link)
軟鏈接數據訪問:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ?
當然軟連接的用戶數據也可以是另一個軟連接的路徑, 其解析過程是遞歸的. 但需要注意: 軟連接創建時原文件的路徑指向使用絕對路徑較 好. 使用相對路徑創建的軟連接被移動后該軟鏈接將會成為一個死鏈接.
總結
以上是生活随笔為你收集整理的查看论坛隐藏链接_软连接与硬链接的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pylucene构建索引_java-Ap
- 下一篇: opencv运动目标跟踪预测_基于Ope