linux symbolic link和hard link
有檔案A,現在要新建一個鏈接到該檔案,可選有symbolic link和hard link。
symbolic link就是新建一個檔案,該新建的檔案的block保存A所在目錄(假設為B,即B目錄檔案)的inode和A在B目錄下的文件名,然後通過目錄檔案B的inode讀取目錄檔案B的block,對照A的文件名,得到A的inode,進而讀取A。
hard link只是在當前目錄檔案的block中增加一條A的inode和A在當前目錄下的文件名(需自定義),然後通過A的inode去讀取A的block,不過有兩條限制,一是不能跨filesystems,二是不能鏈接到目錄:
一,不能跨filesystems,可以理解,假設可以跨filesystems,如果hard link所在的filesystem已掛載,而實際數據的filesystem沒有掛載,想象一下會怎樣
二,不能鏈接到目錄,假設有一目錄C,如果可以鏈接到目錄,在當前目錄的block中增加一條目錄檔案C的inode和該目錄在當前目錄下的文件名,我們可以通過目錄C的inode去讀取C目錄檔案的block,從而得到目錄檔案中記載的下一級目錄檔案和文件的inode和文件名,進而讀取該目錄下的檔案和文件.