linux硬連接和軟連接的區別

1.命令
a.硬連接:node

ln 源文件 連接名字符串

[root@localhost tmp]# ll -i原理

total 1
18319574 -rw-r--r-- 2 root root 1 Nov 28 18:07 e.txt遍歷

[root@localhost tmp]# ln e.txt f數據

[root@localhost tmp]# ll -i文件

total 2
18319574 -rw-r--r-- 2 root root 1 Nov 28 18:07 f
18319574 -rw-r--r-- 2 root root 1 Nov 28 18:07 e.txt文件系統

b.軟連接:字符

ln -s 源目錄或者源文件 連接名系統

[root@localhost tmp]# ll -ilocalhost

total 2
18319579 drw-r--r-- 2 root root 1 Nov 28 18:07 a
18319574 -rw-r--r-- 2 root root 1 Nov 28 18:07 e.txt

[root@localhost tmp]# ln -s e.txt g

[root@localhost tmp]# ll -i

total 3
18319579 drw-r--r-- 2 root root 1 Nov 28 18:07 a
18319574 -rw-r--r-- 2 root root 1 Nov 28 18:07 e.txt
18319578 lrw-r--r-- 2 root root 1 Nov 28 18:07 g  -> e.txt

[root@localhost tmp]# ln -s a b

[root@localhost tmp]# ll -i

total 4
18319579 drw-r--r-- 2 root root 1 Nov 28 18:07 a
18319670 lrw-r--r-- 1 root root 1 Nov 28 18:07 b  -> a
18319574 -rw-r--r-- 2 root root 1 Nov 28 18:07 e.txt
18319578 lrw-r--r-- 2 root root 1 Nov 28 18:07 g  -> e.txt

 

2.原理:
硬連接(hard link):A是B的硬連接(A和B都是文件名),則A的目錄項中的inode節點號與B的目錄項中的inode節點號相同,即一個inode節點對應兩個不一樣的文件名,兩個文件名指向同一個文件,A和B對文件系統來講是徹底平等的。若是刪除了其中一個,對另一個沒有影響。每增長一個文件名,inode節點上的連接數增長一,每刪除一個對應的文件名,inode節點上的連接數減一,直到爲0,inode節點和對應的數據塊被回收。注:文件和文件名是不一樣的東西,rm A刪除的只是A這個文件名,而A對應的數據塊(文件)只有在inode節點連接數減小爲0的時候纔會被系統回收。

軟連接(soft link):A是B的軟連接(A和B都是文件名),A的目錄項中的inode節點號與B的目錄項中的inode節點號不相同,A和B指向的是兩個不一樣的inode,繼而指向兩塊不一樣的數據塊。可是A的數據塊中存放的只是B的路徑名(能夠根據這個找到B的目錄項)。A和B之間是「主從」關係,若是B被刪除了,A仍然存在(由於兩個是不一樣的文件),但指向的是一個無效的連接。

3.硬連接
a.不能對目錄建立硬連接,只能對文件建立硬連接
緣由有幾種,最重要的是:文件系統不能存在連接環(目錄建立時的".."除外,這個系統能夠識別出來),存在環的後果會致使例如文件遍歷等操做的混亂(du,pwd等命令的運做原理就是基於文件硬連接,順便一提,ls -l結果的第二列也是文件的硬連接數,即inode節點的連接數)
b.不能夠跨文件系統,即不能對不一樣的文件系統建立硬連接,兩個文件名要在相同的文件系統下。
c.不能對不存在的文件建立硬連接,由原理便可知緣由。

4.軟連接a.既能夠對文件建立軟連接,又能夠對目錄建立軟連接,遍歷操做會忽略目錄的軟連接。b.能夠跨文件系統c.能夠對不存在的文件建立軟連接,由於放的只是一個字符串,至於這個字符串是否是對於一個實際的文件,就是另一回事了

相關文章
相關標籤/搜索