Linux中軟鏈接和硬鏈接的區(qū)別
鏈接是一種快捷訪問機(jī)制,它通過一個(gè)文件指向原始文件或目錄的方式實(shí)現(xiàn)快捷訪問,同時(shí)還記錄了原始文件或目錄的一些信息。
鏈接允許多個(gè)不同文件對同一個(gè)文件進(jìn)行引用。
什么是軟鏈接
符號(hào)鏈接(symlink),又稱軟鏈接,是一種特殊的文件,它指向 Linux 系統(tǒng)上的另一個(gè)文件或目錄。
這和 Windows 系統(tǒng)中的快捷方式有點(diǎn)類似,鏈接文件中記錄的只是原始文件的路徑,并不記錄原始文件的內(nèi)容。
符號(hào)鏈接通常用于對庫文件進(jìn)行鏈接,也常用于鏈接日志文件和網(wǎng)絡(luò)文件系統(tǒng)(NFS)上共享的目錄。
什么是硬鏈接
硬鏈接是原始文件的一個(gè)鏡像副本。創(chuàng)建硬鏈接后,如果把原始文件刪除,鏈接文件也不會(huì)受到影響,因?yàn)榇藭r(shí)原始文件和鏈接文件互為鏡像副本。
為什么要?jiǎng)?chuàng)建鏈接文件而不直接復(fù)制文件呢?
當(dāng)你需要將同一個(gè)文件保存在多個(gè)不同位置,而且還要保持持續(xù)更新的時(shí)候,硬鏈接的重要性就體現(xiàn)出來了。
如果你只是單純把文件復(fù)制到另一個(gè)位置,那么另一個(gè)位置的文件只會(huì)保存著復(fù)制那一刻的文件內(nèi)容,后續(xù)也不會(huì)跟隨著原始文件持續(xù)更新。
而使用硬鏈接時(shí),各個(gè)鏡像副本的文件內(nèi)容都會(huì)同時(shí)更新。
軟鏈接和硬鏈接的區(qū)別
下表列出了軟鏈接和硬鏈接之間的區(qū)別。
# | 軟鏈接 | 硬鏈接 |
---|---|---|
1 | 軟鏈接類似于 Windows 系統(tǒng)中的快捷方式 | 硬鏈接是原始文件的一個(gè)鏡像副本 |
2 | 軟鏈接又稱符號(hào)鏈接 | 硬鏈接沒有別名 |
3 | 鏈接中任何一個(gè)文件發(fā)生改變,都會(huì)同步到連接中的其它文件 | 和軟鏈接一樣 |
4 | 軟鏈接可以跨文件系統(tǒng)進(jìn)行創(chuàng)建 | 硬鏈接不可以跨文件系統(tǒng)進(jìn)行創(chuàng)建 |
5 | 軟鏈接可以指向文件或目錄 | 硬鏈接只能指向文件 |
6 | 鏈接文件和原始文件之間的 inode 和文件權(quán)限不完全一致 | 鏈接文件和原始文件的 inode 和文件權(quán)限完全一致 |
7 | 鏈接文件只記錄原始文件的路徑,不記錄原始文件的內(nèi)容 | 鏈接文件記錄了原始文件的內(nèi)容 |
8 | 如果原始文件被移除,軟鏈接就會(huì)因?yàn)橹赶虿淮嬖诘奈募?。這被稱為“掛起鏈接” | 即使原始文件被移除,鏈接文件也不受影響。 |
9 | 通過 ln -s <原始文件> <鏈接文件> 命令創(chuàng)建軟鏈接 |
通過 ln <原始文件> <鏈接文件> 命令創(chuàng)建硬鏈接 |
10 | 軟鏈接文件的文件權(quán)限中有一個(gè)特殊標(biāo)記 l |
硬鏈接文件沒有特殊標(biāo)記 |
11 | 通過 find / -type l 命令可以查找軟鏈接文件 |
通過 find / -samefile <原始文件> 命令可以查找硬鏈接文件 |
12 | 通過 symlinks <目錄> 命令可以查找失效的軟鏈接 |
硬鏈接不存在失效鏈接 |