系統環境:
該博文以CentOS6.8_x86_64系統為基礎,Xshell5遠程登錄CentOS6.8系統,以root身份登錄系統。
為什么要學習符號(軟)鏈接和硬鏈接?
符號(軟)鏈接和硬鏈接是Linux文件系統中的一個重要的概念,軟硬鏈接的學習過程中會涉及一些文件系統中的索引節點(inode),索引節點是虛擬文件系統上的非常重要的知識,我們通過分析和學習軟鏈接和硬鏈接的區別,可以更好利用軟硬鏈接的知識去分析文件系統,更好的去理解Linux系統的原理,使用軟硬鏈接會更加縮小系統,還有就是可以更加方便的去移值Linux系統(絕對路徑和相對路徑的使用會更加方便的進行系統的移值)。
硬鏈接(Hard Link)的分析:
課件的解析:
硬鏈接的詳細解析:
硬鏈接是通過索引節點來進行連接文件的。在Linux系統之中,保存在磁盤分區中的文件都有一個單一的inode號(因為Linux一切皆文件,不管什么類型的文件,都會對應一個Linux的節點號,※磁盤上的每一個分區都會有一套自己的inode編號,等分析inode的博客會詳細的講解這些知識)。在Linux之中,多個文件名或單個文件名會通過單一的索引節點指向每一個單一的文件。硬鏈接的作用是允許一個文件擁有多個有效路徑名,這樣每一個用戶都會將一些重要文件通過硬鏈接生成多個文件名,可以防止用戶刪除某一個文件名,而導致刪除整個文件的鏈接關系被刪除,導致文件被刪除,建立鏈接的關系之后,刪除單一的硬鏈接,文件系統的對應關系都不會被刪除,只有當文件的最后一個硬鏈接被刪除之后,文件才會被刪除,這樣簡單的備份即不用另外使用太多另外的磁盤空間,而做到防止“誤刪”的功能。真正的文件刪除的條件是與之相關的所有的硬件接文件均被刪除,文件才會被刪除,文件的數據塊和目錄的連接才會被釋放。
硬鏈接的語法和命令的使用實例:
ln filename [linkname ]
實例分析:
a.創建一個文件名為f1的文件;
b.將how are you? 通過輸入重定向寫入f1文件中;
c.給f1文件創建一個名為f2的硬鏈接;
d.使用ls -i 查看f1文件和f2文件的inode號,顯示為同一個inode號(11);
e.刪除文件f1;
f.查看f2中的內容,發現和f1中的內容相同,說明f1和f2互為相互的硬連接。
符號(軟)鏈接(Symbolic Link)的分析:
課件的解析:
語法:
ln -s filename [linkname]
符號鏈接的詳細解析:
a.linux下的軟鏈接類似于windows下的快捷方式
b.假設b文件是a文件的軟鏈接,當我們打開b文件實際通過b文件的鏈接指向的是a文件,確切的說我們最后打開的b文件是通過a文件的inode打開的文件。與此不同的是,b文件是a文件的硬鏈接的話,其實都是通過相同的inode打開文件。
c.當b目錄為a目錄的軟鏈接的時候,進入b目錄,但實際上進入的是a目錄。
d.軟連接的兩個文件的inode號是不相同的,硬鏈接的兩個inode號是相同的。
e.軟鏈接文件a和b的權限是不相同的,硬鏈接的a和b文件的權限是相同的。
f.當創建軟連接時,a文件和它的軟連接b不再同一目錄時,一定要說明軟鏈接b對于文件a的相對路徑(相對路徑是相對于軟鏈接文件的路徑,而不是現對于當前目錄的路徑),或者直接指明絕對路徑。(※在真正的系統中,軟鏈接多數使用的是指定的相對路徑,而不是絕對路徑,使用相對路徑便于文件和鏈接文件的移值性※)
g.默認創建軟連接的時候,認為創建的鏈接文件和目標文件是在同一目錄。
符號(軟)鏈接實例:
a.新建文件f1,創建f1的軟鏈接f2.(f1 f2 文件的inode號不同,f2 指向f1 文件)
b.在root目錄下創建文件f1,對文件f1分別在/testdir/目錄下,利用下面三種方法創建軟鏈接f1、f2、f3。我們可以發現,f1是錯誤的,f2、f3都是正確的,f2使用的是絕對路徑的創建軟鏈接(在本地系統使用無障礙,但是移值系統之后,可能會造成軟鏈接無法使用),f3是使用的相對路徑創建的軟鏈接。(※相對路徑是相對于軟鏈接文件的路徑,而不是現對于當前目錄的路徑※,增強文件跟隨系統的移值性。)
原創文章,作者:sjsir,如若轉載,請注明出處:http://www.www58058.com/26682