Linux命令(一):軟鏈接和硬鏈接
今天起,決定開始自學Linux命令及Shell腳本,並用Linux學習(命令行,Shell及其他知識點)這一系列記錄下自己的心路歷程,內容不分先後,只記錄自己覺得有必要的,簡單的就不記了!
第一個知識點:硬鏈接和軟鏈接
一、鏈接的定義:在linux中,如果要維護同一份文件的兩份或多份副本,除了保存多份單獨的物理副本之外,還可以使用只保存一份物理副本和多份虛擬副本的方式,這種虛擬的副本就稱之為鏈接。---《Linux命令行與腳本大全》
上面的解釋來自書本,可以說是解釋的很清楚了,按照我自己的理解就是:在linux系統中,如果要備份某個文件,除了復制一份原文件之外,還能使用虛擬文件的方式,相比window而言,確實是多了一種方式,因為windows中
我們通常是使用復制原文件的方式來備份文件。可是如果僅僅看這個解釋,我還是不太明白這個虛擬是什麽意思,它到底和物理副本有什麽區別?通過一番測試和調研後得出如下結論:
鏈接又分為軟鏈接和硬鏈接:
1、硬鏈接:硬鏈接相當於復制了一份原文件,它和原文件一模一樣,包括文件索引節點號,所以它會占用存儲空間,如果原文件被刪除,它依然存在;
2、軟鏈接:軟鏈接只是創建了一個指向原文件的指針,它有新的文件索引節點號,不會占存儲空間,如果原文件被刪除,它也會失效;
共同點:當改變原文件內容的時候,鏈接文件的內容也會被同步修改;
二、命令介紹
創建鏈接文件的方式有兩種,一種是cp命令(復制),一種是ln命令(鏈接),兩種都能實現,從cp我們就能知道,鏈接其實是備份文件的的一種形式(個人觀點!)
cp命令:
創建硬鏈接:cp -l src des
創建軟鏈接:cp -s src des
ln命令:
創建硬鏈接:ln src des
創建軟鏈接:ln -s src des
這裏需要說一下自己學習過程中的一些心路歷程:剛開始創建鏈接的時候搞不清楚src和des,不知道到底是給哪個文件創建一個副本,傳參數的時候src和des到底哪個才是創建之後的文件,主要是因為沒有系統的看書,
只是從別人的博客中看,所以直到看了書才明白,src和des的意思是,給源文件src創建一個副本des,所以在傳這兩個參數的時候,如果兩個文件不在同一個目錄,我們也可以連同文件所在的目錄一起傳入,這個地方
真是被自己的悟性蠢哭了呀!!!
三、命令實戰
上面是對基本概念的解釋,也是必備的理論部分,下面是實踐部分,說的對不對,用命令驗證一下不就見分曉了嗎?
說了使用方式,下面直接上命令吧:我以ln命令為例,cp只要註意參數就行,不舉例說明!
1、創建一個空文件作為源文件
2、給srcfile.txt創建一個硬鏈接
創建硬鏈接desfile1.txt後發現這兩個文件的文件索引值是一樣的,說明它們是完全相同的兩個文件。
3、給srcfile.txt創建一個軟鏈接
可以看出軟鏈接文件的文件類型為l,且後面的表現形式也不一樣,有一個->這樣的符號指向源文件,且索引值也與源文件不一致,並且是新分配的!
這就驗證了鏈接定義中所說的!
4、修改源文件內容查看硬鏈接文件和軟鏈接文件的內容
從上面的實踐可以看出,當源文件內容修改之後,對應的軟鏈接文件和硬鏈接文件的內容也一並修改了!
5、刪除源文件,查看鏈接文件
從上面的例子可以看出:當刪除源文件之後,硬連接的文件依然存在,且有效,內容也能查看,但是軟鏈接的文件失效,查看內容時會提示找不到文件!
這是不是驗證了鏈接定義中的內容!!!
6、將源文件再次創建
從上面的例子可以看出:當我新建一個軟鏈接指向的文件之後,軟鏈接文件恢復,且指向新的文件,同時文件內容也會隨著新文件的改變而改變,但是原來的硬鏈接文件還是刪除文件的副本,並不是新建文件的副本。
所以說軟鏈接會隨著它所指向的那個文件的改變而改變,只要指向的文件名不變,即便刪除再新建也會使其有效,只要文件名存在即可:
但是硬鏈接就是源文件的一個物理副本,如果原文件被刪除,它依然有效,新建一個一模一樣的文件,它依然是最原始的源文件;
由此可以看出,這個軟鏈接確實有點花心啊,就像某些男生找女朋友,分了一個覺得自己死了,再找到一個又活過來了,不想硬鏈接,找到一個就這一直到天荒地老!哈哈~~
好了,對於軟鏈接和硬鏈接的介紹就到這裏,同樣的可以用cp命令實現哦!!
Linux命令(一):軟鏈接和硬鏈接