Linux下的實體連接與符號連接

Linux 文件系統最重要的特色之一是它的文件連接。連接是對文件的引用,這樣可讓文件在文件系統中多處被看到。在 Linux 中,連接能夠如同原始文件同樣來對待,即連接能夠與普通的文件同樣被執行、編輯和訪問。對系統中的其餘應用程序而言,連接就是它所對應的原始文件。當經過連接對文件進行編輯時,編輯的其實是原始文件。連接不是副本。node

在Linux中,有兩種類型的連接:實體連接(hard link,硬連接)和符號連接(symbolic link軟連接)。安全

實體連接ide

咱們知道,在Linux中,文件名實際上是存在文件所屬目錄的block裏的,且該block裏存放了文件的inode號。根據此inode號碼,咱們能夠找到文件的block,從而讀取文件內容。那麼,若是咱們在其它目錄的block裏添加一條記錄,引用另外一個文件名(或者同名),該文件對應的inode號和上一個文件的inode號碼一致。這樣的話,不一樣目錄裏的不一樣文件,其實對應的是同一個inode號碼,對應的也就是同一個文件。這就是實體連接的概念。blog

clip_image002

從示意圖能夠看出,實體連接是不會創建新的inode的,它只是在某目錄的block區增長了一條記錄而已,也所以實體連接是不能夠跨越文件系統的。也能夠說,實體連接其實是爲文件建了一個別名,連接文件和原文件其實是同一個文件。不管對哪一個文件的操做,都是對同一個文件的操做。ip

實體連接的好處是安全。當移動或刪除某文件時,實體連接不會被破壞,由於它所引用的是文件的物理數據而不是文件在文件結構中的位置。同時若是刪除了某文件,而該文件有相應的實體連接,那麼這個文件依然會保留,直到全部對它的引用都被刪除。get

符號連接it

符號連接至關於Windows下的快捷方式。符號連接會產生的一個新的文件,但這個文件的做用就是專門指向某個文件的,當刪除連接文件時,那就等於不須要這個連接,和原來的存在的實體原文件沒有任何關係。但刪除原來的文件,則相應的符號連接不可用。class

因爲會產生新的文件,因此當建立符號連接時,會佔用新的inode編號。cli

ln命令file

建立連接的命令是ln,默認狀況下建立的實體連接,當加上-s選項時,則建立符號連接。

ln的用法以下:

clip_image004

建立一個實體連接:

clip_image005

上圖中,對於新建立的文件file1,添加了一個在當前目錄下的實體連接文件file1-hardlink,當使用ll命令查看時,會發現此兩個文件徹底同樣。同時,因爲建立了連接文件,因此,文件的連接數目都是2.

再針對file1建立一個符號連接:

clip_image007

上圖中能夠看到,建立的符號連接文件file1-symlink和原文件並不相同,而且當咱們ll時,能夠看到系統會標明符號連接所連接到的原文件。

當刪除文件時:

clip_image008

上圖能夠看到,當刪除原文件file1時,實體連接文件不會報錯,而符號連接文件則會提示找不到文件。

關於目錄

咱們知道,當新建一個目錄時,該目錄下會有.和..兩個目錄,.表明當前目錄,而..表明上層目錄。因此,對於某個新建立的目錄來講,.目錄至關因而該目錄的一個連接,故新建目錄的連接數目是2。而..至關因而其上層目錄的一個連接,故上層目錄的連接數目會+1.

clip_image009

上圖中,/tmp目錄的原連接數目爲10.當建立了新的子目錄dir2後,能夠看出,dir2的連接數目是2,而/tmp的連接數目變爲了11.

相關文章
相關標籤/搜索