天天一個linux命令21之ln: linux 下的軟鏈和硬鏈

首先理解一下一下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總結:總結

第一,ln命令會保持每一處連接文件的同步性,也就是說,不論你改動了哪一處,其它的文件都會發生相同的變化;
第二,ln的連接又軟連接 和硬連接兩種,
        軟連接就是ln -s ** **,它只會在你選定的位置上生成一個文件的鏡像,不會佔用磁盤空間,
        硬連接ln ** **,沒有參數-s, 它會在你選定的位置上生成一個和源文件大小相同的文件,
        不管是軟連接仍是硬連接,文件都保持同步變化。




相關文章
相關標籤/搜索