1. 程式人生 > >Linux下的硬鏈接與軟鏈接

Linux下的硬鏈接與軟鏈接

pan 如果 標識 ima 其中 new -i works jpg

本文總結自:

https://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/index.html#fig2

一個文件可以用下圖表示:

技術分享圖片

其中,文件名是我們能看到的那個名字。

inode被包含在元數據(metadata)中,元數據中記錄文件的附加屬性,比如文件大小,創建時間等等。

inode是索引節點號,是文件的唯一標識。可使用命令:

ls -i

來查看

data blocks是文件數據塊,記錄的是文件的真實內容

這裏要說一句:

當我們用rm刪除文件的時候,僅僅是解除filename和inode的引用,一般來說並不會摧毀問文件數據。
而硬鏈接,就相當於對同一個inode增加了一個別名

所以用rm刪除文件的時候,如果對inode創建了硬鏈接,則還可以通過另一個filename來訪問。

硬鏈接的創建方法:

ln oldfile newfile

技術分享圖片

軟鏈接,則是創建一個data block,這個data block中存儲的是另外一個filename。

所以當我們用rm刪除了file,那麽cat softlink將會得到實際文件的輸出。

軟鏈接的創建方法:

ln -s oldfile newfile

使用ls -l 命令可以看到文件的鏈接數,這個信息出現在輸出的第二列.

創建軟鏈接時,文件的鏈接數不會增

同時,可以看到->符號,這個符號的指向是從軟鏈接文件指向源文件

使用ls -i指令可以發現,硬鏈接文件的inode號碼和源文件相同,軟鏈接文件的inode號碼和源文件不同,這和以上的分析是相同的。

Linux下的硬鏈接與軟鏈接