inode 指示:該文件的數據存放在數據區的哪些塊內。由於這個「映射」關係不能變動,所以,inode 至關於表明着文件自己。(值得注意的是,文件名與文件自己不是直接映射起來的,中間隔着 inode)node
內核爲每個新建立的文件分配一個Inode(索引結點),每一個文件都有一個惟一的inode號。文件屬性保存在索引結點裏,在訪問文件時,索引結點被複制到內存,從而實現文件的快速訪問。網絡
連接是一種在共享文件和訪問它的用戶的若干目錄項之間創建聯繫的一種方法。spa
Linux中包括兩種連接:硬連接(Hard Link)和軟連接(Soft Link),軟連接又稱爲符號連接(Symbolic link)。操作系統
硬連接至關因而一個指針,指向文件索引節點,系統並不爲它從新分配inode。用 ln 命令來創建硬連接。設計
當咱們建立了一個文件的硬連接時,硬連接會使用和文件相同的inode號,此時咱們發現,原來的文件的inode鏈接數由最初的1變爲了2,實際上硬連接和文件使用了相同的inode,只不過是inode鏈接數增長了,刪除文件不會影響硬連接,硬連接的inode數會從2變爲1指針
# 不論是硬連接仍是軟鏈接,源文件必須先存在 [root@tanbaobao thy]# touch codefile.txt [root@tanbaobao thy]# vi codefile.txt # 索引數量爲1 [root@tanbaobao thy]# ls -il 總用量 8 922461 -rw-r--r-- 1 root root 6 12月 18 11:04 codefile.txt # 默認不加任何參數是建立硬連接,且參數二必須是要建立的連接文件 [root@tanbaobao thy]# ln codefile.txt h_codefile.txt # 查看硬連接,會發現它們的inode索引號是相同的,但索引的數量會加1 [root@tanbaobao thy]# ls -il 總用量 12 922461 -rw-r--r-- 2 root root 6 12月 18 11:04 codefile.txt 922461 -rw-r--r-- 2 root root 6 12月 18 11:04 h_codefile.txt # 刪除源文件並不會影響硬連接(只有將全部指向文件內容的指針,也即連接數減爲0時,內核纔會把文件內容從磁盤上刪除。) [root@tanbaobao thy]# rm -rf codefile.txt [root@tanbaobao thy]# ls -li 總用量 8 922461 -rw-r--r-- 1 root root 6 12月 18 11:04 h_codefile.txt
PS:硬連接,只能應用於文件,而不能應用於目錄,並且不能跨文件系統(即分區)。不能夠在不一樣文件系統的文件間創建連接。code
符號連接是對一個文件的間接指針。硬連接直接指向文件的i節點。 blog
軟連接克服了硬連接的不足,沒有任何文件系統的限制,任何用戶能夠建立指向目錄的符號連接。甚至能夠跨越不一樣機器、不一樣網絡對文件進行連接。創建軟連接只要在ln後面加上選項 –s。 索引
在建立文件的軟連接時,軟連接會使用一個新的inode,因此軟連接的inode號和文件的inode號不一樣,軟連接的inode裏存放着指向文件的路徑,刪除文件,軟連接也沒法使用了,由於文件的路徑不存在了;當咱們再次建立這個文件時(文件名與以前的相同),軟連接又會從新指向這個文件(inode號與以前的不一樣了),而硬連接不會受其影響內存
# 先建立源文件 [root@tanbaobao thy]# touch srcfile.txt [root@tanbaobao thy]# ls -l 總用量 4 -rw-r--r-- 1 root root 38 12月 18 11:01 srcfile.txt # 建立軟鏈接(參數二必須是軟鏈接文件名) [root@tanbaobao thy]# ls -l 總用量 4 -rw-r--r-- 1 root root 38 12月 18 11:01 srcfile.txt # 查看(軟鏈接的索引是不相同的,且索引數量都爲1,而且軟鏈接文件名後邊會指向連接的源文件) [root@tanbaobao thy]# ls -il 總用量 8 922457 lrwxrwxrwx 1 root root 11 12月 18 11:02 desfile.txt -> srcfile.txt 922460 -rw-r--r-- 1 root root 64 12月 18 11:03 srcfile.txt # 刪除源文件,軟鏈接就會失效(由於索引指向的源文件路徑已經不存在了) [root@tanbaobao thy]# rm -r srcfile.txt rm:是否刪除普通文件 "srcfile.txt"?y [root@tanbaobao thy]# ls -il 總用量 4 922457 lrwxrwxrwx 1 root root 11 12月 18 11:02 desfile.txt -> srcfile.txt
查看軟鏈接文件會顯示沒有該文件:
從新建立以後又會恢復,由於路徑指向的文件存在:
[root@tanbaobao thy]# touch srcfile.txt [root@tanbaobao thy]# ll -i 總用量 4 922457 lrwxrwxrwx 1 root root 11 12月 18 11:02 desfile.txt -> srcfile.txt 922458 -rw-r--r-- 1 root root 0 12月 18 11:43 srcfile.txt
說明:能夠建立多個連接文件,可是不能在軟鏈接文件上建立連接文件,這樣會致使斷裂,造成混亂的連接鏈
掛載點
只能在同種存儲媒體上的文件之間建立硬連接(Hard Link),不能在不一樣掛載點下的文件間建立硬連接,對於後一種狀況,可使用軟連接;(區分不一樣掛載點與同一掛載點不一樣目錄)
目錄
軟鏈接就至關於 win 中的快捷方式即若是軟連接一個目錄只是一個目錄的快捷方式到指定位置,操做系統找這個快捷方式會直接找到真實目錄下的文件。可是硬連接的話,至關於鏡像的方式,建立一個目錄的硬連接以後,操做系統須要把這個目錄下全部的文件都要作一次硬連接(複製一份過去),這樣操做系統在訪問這個連接的時候要不斷去遍歷,大大增長複雜度,並且很容易進入死循環。
硬連接不能對目錄建立受限於文件系統的設計。Linux 文件系統中的目錄均隱藏了兩個特殊的目錄,當前目錄和父目錄。實際上是兩個硬連接,若系統運行對目錄建立硬連接,則會產生目錄環。
總結:
1)硬連接原文件&連接文件共用一個inode號,說明他們是同一個文件;而軟連接原文件&連接文件擁有不一樣的inode號,代表他們是兩個不一樣的文件;
2)在文件屬性上軟連接明確寫出了是連接文件,而硬連接沒有寫出來,由於在本質上硬連接文件和原文件是徹底平等關係,就像文件被複制了一份同樣;
3)連接數目是不同的,軟連接的連接數目不會增長,硬連接會相應的加一;
4)文件大小是不同的,硬連接文件顯示的大小是跟原文件是同樣的,而這裏軟連接顯示的大小與原文件就不一樣了。