軟連線和硬鏈結的區別

2021-09-13 09:29:31 字數 2407 閱讀 5761

首先我們先來了解一下linux中檔案的組成

stat命令檢視i-節點資訊

在linux中檢視乙個檔案的內容是如何找到資料的呢?

每個檔案都會有自己對應的inode號,檢視檔案時他會根據自己的inode號找到找到自己相應的blocks也就是資料

接下來就重點講一下硬鏈結和軟連線的使用和區別

硬鏈結

就是乙個檔案有多個不同的檔名,多個不同的檔名對應相同的inode號,檢視檔案時,找到的資料都是相同的

命令格式:ln 原始檔… 鏈結檔案

在我理解,通俗上來講:相當於給這個檔案做了乙個複製操作,起了乙個新的名字,並且保持對這個新檔案與舊檔案保持同步更新

下面就是我建立的乙個硬鏈結

[root@mysql_glbic ~]# ln abc.txt aa

[root@mysql_glbic ~]# ls

aa abc.txt install.log

[root@mysql_glbic ~]# cat aa

linux

[root@mysql_glbic ~]# cat abc.txt

linux

[root@mysql_glbic ~]# echo mysql >>abc.txt #對原始檔追加內容

[root@mysql_glbic ~]# cat abc.txt

linux

mysql

[root@mysql_glbic ~]# cat aa 建立硬鏈結的檔案也會顯示

linux

mysql

刪除原始檔後檢視所對應的硬鏈結還能檢視到內容

[root@mysql_glbic ~]# rm   -rf abc.txt

[root@mysql_glbic ~]# cat aa

linux

mysql

軟連線指向原始檔案所在的路徑,又稱為符號鏈結

檔案型別和許可權肯定是lrwxrwxrwx

命令格式:ln -s 原始檔… 鏈結檔案

在我理解建立乙個軟連線後,生成的檔案對應了不同的inode號,他的這個inode號對應的資料時原始檔儲存的位置

檢視軟連線檔案時,找到了原始檔的位置,在根據原始檔的inode號找到原始檔所對應的資料

也就是相當於windows中的快捷方式

下面建立乙個軟連線

[root@mysql_glbic ~]# ln -s aa bb

[root@mysql_glbic ~]# ls

aa bb

[root@mysql_glbic ~]# cat bb #檔案內容與原始檔內容相同

linux

mysql

[root@mysql_glbic ~]# mv aa /tmp/aaaa 將原始檔移走

[root@mysql_glbic ~]# ls

bb

[root@mysql_glbic ~]# cat bb #原始檔路徑改變後就不能檢視到對應的資料了

cat: bb: no such file or directory

[root@mysql_glbic ~]#

硬鏈結和軟連線的區別

linux硬鏈結和軟鏈結的區別 簡而言之,軟鏈結相當於windows中的快捷方式,硬鏈結相當於乙個災備系統,資料存放在兩處,與複製不同 的是兩處之間存在同步機制,一處資料的改變會實時同步到另一處,另外,一處資料如果被刪除了,不會影響 到另一處的資料.下面是詳細的介紹 硬連線指向的是節點 inode ...

硬鏈結和軟連線的區別

要說明這個問題,先說明下liunx下檔案和目錄的本質。事實上,在liunx上,目錄也是檔案的一種,它是儲存了一張表的檔案。例如有乙個叫程式的資料夾,裡面有兩個檔案1和2.在那張目錄表內。它的內容是這樣的 名稱 節點 1 338 2 228 那麼什麼是節點呢?c語言我們都學過,我們簡單地把節點號理解成...

硬鏈結和軟連線的區別

硬鏈結和軟連線的主要區別在於 硬鏈結和原始檔具有相同的inode節點號和block,硬鏈結和原始檔是同一份檔案。軟連線和原始檔的inode節點號不同,進而指向的block也不同,軟連線block中存放了原始檔的路徑名 原始檔和硬鏈結檔案擁有相同的inode和block 修改任意乙個檔案,另乙個都改變...