天天看點

Linux 符号連結

linux的符号連結

分類: Linux核心 2010-03-29 16:47 1462人閱讀 評論(0) 收藏舉報

      ln:該指令在檔案之間建立連結。這種操作實際上是給系統中已有的某個檔案指定另外一個可用于通路它的名稱。對于這個新的檔案名,我們可以為之指定不同的 通路權限,以控制對資訊的共享和安全性的問題。如果連結指向目錄,使用者就可以利用該連結直接進入被連結的目錄而不用打一大堆的路徑名。而且,即使我們删除 這個連結,也不會破壞原來的目錄。

      格式:ln [選項] 目标 目錄

      連結有兩種,一種被稱為硬連結(Hard Link),另一種被稱為軟連結即符号連結(Symbolic Link)。建立硬連結時,連結檔案和被連結檔案必須位于同一個檔案系統中,并且不能建立指向目錄的硬連結。而對符号連結,則不存在這個問題。預設情況 下,ln産生硬連結。如果給ln指令加上- s選項,則建立符号連結。

(1)兩者的使用比較

      硬連結隻能引用同一檔案系統中的檔案。它引用的是檔案在檔案系統中的實體索引(inode)。當移動或删除原始檔案時,硬連結不會被破壞,因為它所引用的是檔案的實體資料而不是檔案在檔案結構中的位置(删除連結不會删除源檔案,删除源檔案不會删除連結)。

      符号連結是一個指針,指向檔案在檔案系統中的位置。符号連結可以跨檔案系統,甚至可以指向遠端檔案系統中的檔案。符号連結隻是指明了原始檔案的位置,使用者 需要對原始檔案的位置有通路權限才可以使用連結。如果原始檔案被删除,所有指向它的符号連結也就都被破壞了。它們會指向檔案系統中并不存在的一個位置(删 除連結并不會删除原檔案,删除源檔案會删除連結)。

(2)從Inode的層次來比較

      在Linux 檔案系統中,inode值相同的檔案是硬連結檔案,也就是說,不同的檔案名,inode可能是相同的,一個inode值可以對應多個檔案。

[root@localhost ~]# ls -li sun.txt //注:檢視sun.txt的屬性;

2408263 -rw-r--r-- 1 root root 29 04-22 21:02 sun.txt //注:這是sun.txt的屬性;

[root@localhost ~]# ln sun.txt sun002.txt //注:我們通過ln 來建立sun.txt的硬連結檔案sun002.txt

[root@localhost ~]# ls -li sun* //注:我們列一下sun.txt 和sun002.txt

2408263 -rw-r--r-- 2 root root 29 04-22 21:02 sun002.txt

2408263 -rw-r--r-- 2 root root 29 04-22 21:02 sun.txt

      我們可以看到sun.txt在沒有建立硬連結檔案sun002.txt的時候,其連結個數是1(也就是-rw-r--r--後的那個數值),建立了硬連結 sun002.txt建立後,這個值變成了2。也就是說,我們每次為sun.txt建立一個新的硬連結檔案後,其硬連結個數都會增加1。inode值也相 同。

     我們可以建立一個軟連結看下:

[root@localhost ~]# ls -li linuxsir001.txt

2408274 -rw-r--r-- 1 root root 29 04-22 21:53 linuxsir001.txt

[root@localhost ~]# ln -s linuxsir001.txt linuxsir002.txt

[root@localhost ~]# ls -li linuxsir001.txt linuxsir002.txt

2408795 lrwxrwxrwx 1 root root 15 04-22 21:54 linuxsir002.txt -> linuxsir001.txt

      兩個檔案的節點不同;兩者的硬連結個數相同都是1 ;我們還注意到了linuxsir002.txt 後面有一個标記 ->,這表示linuxsir002.txt 是linuxsir001.txt的軟連結檔案。

繼續閱讀