linux 硬软链接区别
linux 硬軟鏈接區別
? ? ? linux的軟連接(symbolic link or soft link)類似于windows的快捷方式;而硬鏈接(hard link)機制有點像copy,不過不同的是,帶有同步機制,一處修改,在另一處都會看到,并且一處刪除對應文件后,并不影響另一處的正常使用。
? ? ?硬鏈接與軟鏈接是 Linux 文件系統中的一個重要概念,其涉及文件系統中的索引節點 (index node 又稱 inode),而索引節點對象是 Linux 虛擬文件系統 (VFS) 的基本概念之一。通過剖析硬鏈接與軟鏈接的聯系與區別,我們可更好的了解 Linux 中 VFS 這一通用文件模型。
? ? ?我們知道文件都有文件名與數據,這在 Linux 上被分成兩個部分:用戶數據 (user data) 與元數據 (metadata)。用戶數據,即文件數據塊 (data block),數據塊是記錄文件真實內容的地方;而元數據則是文件的附加屬性,如文件大小、創建時間、所有者等信息。在 Linux 中,元數據中的 inode 號(inode 是文件元數據的一部分但其并不包含文件名,inode 號即索引節點號)才是文件的唯一標識而非文件名。文件名僅是為了方便人們的記憶和使用,系統或程序通過 inode 號尋找正確的文件數據塊。
? ??為解決文件的共享使用,Linux 系統引入了兩種鏈接:硬鏈接 (hard link) 與軟鏈接(又稱符號鏈接,即 soft link 或 symbolic link)。鏈接為 Linux 系統解決了文件的共享使用,還帶來了隱藏文件路徑、增加權限安全及節省存儲等好處。若一個 inode 號對應多個文件名,則稱這些文件為硬鏈接。換言之,硬鏈接就是同一個文件使用了多個別名。
? ? 由于硬鏈接是有著相同 inode 號僅文件名不同的文件,因此硬鏈接存在以下幾點特性:
- 文件有相同的 inode 及 data block;
- 只能對已存在的文件進行創建;
- 不能交叉文件系統進行硬鏈接的創建;
- 不能對目錄進行創建,只可對文件創建;
- 刪除一個硬鏈接文件并不影響其他有相同 inode 號的文件(引用計數)。
? ? ?硬鏈接不能對目錄創建是受限于文件系統的設計。現 Linux 文件系統中的目錄均隱藏了兩個個特殊的目錄:當前目錄(.)與父目錄(..)。查看這兩個特殊目錄的 inode 號可知其實這兩目錄就是兩個硬鏈接。若系統允許對目錄創建硬鏈接,則會產生目錄環。
? ??
? ? ?軟鏈接與硬鏈接不同,若文件用戶數據塊中存放的內容是另一文件的路徑名的指向,則該文件就是軟連接。軟鏈接就是一個普通文件,只是數據塊內容有點特殊。軟鏈接有著自己的 inode 號以及用戶數據塊。因此軟鏈接的創建與使用沒有類似硬鏈接的諸多限制:
- 軟鏈接有自己的文件屬性及權限等;
- 可對不存在的文件或目錄創建軟鏈接;
- 軟鏈接可交叉文件系統;
- 軟鏈接可對文件或目錄創建;
- 創建軟鏈接時,鏈接計數 i_nlink 不會增加;
- 刪除軟鏈接并不影響被指向的文件,但若被指向的原文件被刪除,則相關軟連接被稱為死鏈接(即 dangling link,若被指向路徑文件被重新創建,死鏈接可恢復為正常的軟鏈接)。
? ? ? Linux 下共存的基礎就是 Linux VFS(Virtual File System 又稱 Virtual Filesystem Switch),即虛擬文件系統。VFS 作為一個通用的文件系統,抽象了文件系統的四個基本概念:文件、目錄項 (dentry)、索引節點 (inode) 及掛載點,其在內核中為用戶空間層的文件系統提供了相關的接口。VFS 實現了 open()、read() 等系統調并使得 cp 等用戶空間程序可跨文件系統。VFS 真正實現了上述內容中:在 Linux 中除進程之外一切皆是文件。
?
轉載于:https://www.cnblogs.com/onlysun/p/4507423.html
總結
以上是生活随笔為你收集整理的linux 硬软链接区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2015.05.15,外语,学习笔记-《
- 下一篇: dedecms /plus/feedba