linux中的鏈結

2022-09-14 12:33:09 字數 2019 閱讀 7957

剛學習linux就知道linux中的鏈結有兩種,符號鏈結和硬鏈結。但是兩者之間的區別又是怎樣的呢?有些教材是翻譯的英文,導致一些理解上很費解,其實這種問題很簡單,那就是自己動手測試一下。

1. 符號鏈結

ln -s sss.txt ttt.txt
此處的-s是指的symbolic,不過國內也有人喜歡叫做軟鏈結,導致一些人以為s的意思是soft。

可以看到符號鏈結的檔案,有乙個類似windows系統下快捷方式的小箭頭。

首先,符號鏈結檔案和原來的檔案,檔案大小、內容不同,而且是兩個完全不同的檔案,這個可以通過inode確認。

可以看到sss.txt檔案大小是67位元組,而ttt.txt檔案大小為7位元組。兩個檔案的inode分別是1836284和1835050,說明確實是兩個不同的檔案。

其次,在訪問時的作用。如果我用文字編輯器開啟sss.txt,輸入一些內容然後儲存,然後用文字編輯器再開啟ttt.txt,可以看到其內容也產生了變化。反過來,我繼續在ttt.txt中輸入一些字元儲存後,再開啟sss.txt,則其中內容也產生變化。

最後我們我們還可以看到,即使內容產生變化,兩個檔案的大小變化情況:

sss.txt檔案大小已經變為89位元組了,而ttt.txt檔案大小仍舊為7位元組,因為它僅僅指向了sss.txt檔案, 符號鏈結檔案和windows平台下的快捷方式很像。

2. 硬鏈結

從ls顯示的結果來看,ppp.txt和sss.txt之間看起來沒什麼關係。但是如果我們用文字編輯器開啟sss.txt或者ppp.txt,對乙個檔案內容的修改,同樣也會在另外乙個檔案中得到體現,這一點和之前的符號鏈結倒是一致的。

此外,ppp.txt和sss.txt兩個檔案大小都是89位元組,我們自然會想到,他們是否是同樣乙個檔案呢?看看inode吧:

可以看到,帶有硬鏈結的檔案共享inode編號 ,說明

這兩檔案就是同乙個檔案。

3. 區別

測試了這麼多,是時候做一下總結了。

相同點:

1)建立鏈結的命令都是ln,而且都要求原檔案存在,即你不能為乙個不存在的檔案建立鏈結。

2)對原檔案內容的修改,都會反映到鏈結檔案上,反過來也一樣,也就是所謂的同步更新。

不同點:

1)符號鏈結是乙個新的檔案,硬鏈結是同乙個檔案

2)只能對處於同一儲存**的檔案建立硬鏈結。要想在不同儲存**的檔案之間建立鏈結,只能使用符號鏈結

3)軟鏈結會因為原檔案的刪除、重新命名等導致不可用,而硬連線不會。

例如,我們把sss.txt重新命名為aaa.txt,ppp.txt可以正常訪問和使用,而且更新也會在aaa.txt中得到體現,但是ttt.txt已經不可用了。

但是ppp.txt就不一樣了,你在ppp.txt中的修改都會在aaa.txt中得到反映,而且你把ppp.txt放到其他的路徑(同一儲存**)下,其效果也是一樣的。

總的來說,對於乙個習慣了使用windows系統的人來說,符號鏈結由於有快捷方式這種類似的概念,因此相對來說更好理解一點,而硬鏈結在windows中似乎沒有對應方式。

Linux中鏈結的軟 硬鏈結的區別

1.在建立上,軟鏈結多乙個引數 s 如 發現 軟鏈結類似於windows中快捷方式,訪問的就是原始檔 硬鏈結類似於copy。但不論軟硬鏈結與真實檔案的大小和建立時間完全相同,且同步更新。2.硬鏈結與拷貝的區別 發現 拷貝與真實檔案的建立日期不同。若想複製時日期相同,可通過命令 cp p a.txt ...

Linux中的硬鏈結和軟鏈結

1.linux鏈結概念 linux鏈結分兩種,一種被稱為硬鏈結 hard link 另一種被稱為符號鏈結 symbolic link 預設情況下,ln命令產生硬鏈結。硬連線 硬連線指通過索引節點來進行連線。在linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配乙個編號,稱為索引節...

Linux中的硬鏈結與軟鏈結

inode ext檔案系統的每個目錄與檔案都有乙個inode與之對應,inode裡儲存了檔案和目錄實際儲存內容的data block的號碼,簡而言之就是inode是乙個檔案索引 例如我們執行以下shell alexis idiotic youth tests ls li total 0524759 ...