首先理解一下一下inode:Unix/Linux系統內部不使用文件名,而使用inode號碼來識別文件。node
表面上,用戶經過文件名,打開文件。實際上,系統內部這個過程分紅三步:首先,系統找到這個文件名對應的inode號碼;其次,經過inode號碼,獲取inode信息;最後,根據inode信息,找到文件數據所在的block,讀出數據。linux
一、文件名和inode號碼是"一一對應"關係,每一個inode號碼對應一個文件名。可是,Unix/linux系統容許,多個文件名指向同一個inode號碼。spa
這意味着,能夠用不一樣的文件名訪問一樣的內容;對文件內容進行修改,會影響到全部文件名;可是,刪除一個文件名,不影響另外一個文件名的訪問。這種狀況就被稱爲"硬連接"(hard link)。.net
ln命令能夠建立硬連接:ln 源文件 目標文件get
二、除了硬連接之外,還有一種特殊狀況。同步
文件A和文件B的inode號碼雖然不同,可是文件A的內容是文件B的路徑。讀取文件A時,系統會自動將訪問者導向文件B。所以,不管打開哪個文件,最終讀取的都是文件B。這時,文件A就稱爲文件B的"軟連接"(soft link)或者"符號連接(symbolic link)。it
這意味着,文件A依賴於文件B而存在,若是刪除了文件B,打開文件A就會報錯:"No such file or directory"。這是軟連接與硬連接最大的不一樣:文件A指向文件B的文件名,而不是文件B的inode號碼,文件B的inode"連接數"不會所以發生變化。class
ln -s命令能夠建立軟連接 ln -s 源文件(或目錄) 目標文件(或目錄)file
3總結:總結