符號連結 ln -s 和硬連結 ln?

歡迎提問 debian desktop 相關問題,何謂 desktop ? 舉凡您日常生活會用到的部份,如上網 ( www 、 bbs ..) 、程式設計、繪圖...等等。 通常以 X Window 環境底下問題為主。

符號連結 ln -s 和硬連結 ln?

文章THQ » 週六 1月 14, 2006 1:22 pm

請問符號連結 ln -s 和硬連結 ln
有什麼不同呢
THQ
活潑的高中生
活潑的高中生
 
文章: 492
註冊時間: 週二 1月 04, 2005 9:11 pm

文章d2207197 » 週六 1月 14, 2006 5:31 pm

符號連結就像 windows 下的捷徑一樣,符號連結本身是獨立的檔案,裡面包含目標的「路徑」,可以是相對路徑或絕對路徑。

要了解硬連結,首先要知道一個目錄僅是一個 List,裡面只是包含檔名和檔案的 inode 位置,並不實際包含檔案的資料。
而硬連結只是在該目錄的 List 中增加一個項目,此項目的 inode 跟原來的檔案相同。因此無論從任何角度看,都跟原來的檔案沒有差別,資料相同、權限相同,只是多一個路徑可以存取他罷了。


其實這樣看就已經大概知道符號連結與硬連結的種種性質了。

因為符號連結是指向目標的路徑,假如我把符號連結的來源檔案搬到別的路徑,那那個符號連結就等於爛掉了。如果是硬連結,不管我把來源檔案搬到別的路徑、別的磁碟,甚至刪掉,硬連結都還保有原來檔案的資料、權限(只要還有任何一個 directory entry 指向某 inode ,此 inode 就不會被刪除,資料也會繼續保存。所以硬連結也滿適合用來防止重要檔案被誤砍) 。

所以在同一個 file system 下作
代碼: 選擇全部
ln /foo/bar/file1 /bar/foo/file2
rm /foot/bar/file1


代碼: 選擇全部
mv /foo/bar/file1 /bar/foo/file2

的結果是相同的。

硬連結是建立一個有相同 inode address 的 directory entry,所以必須要與來源檔案在同一個 file system。符號連結則沒此限制,你只要能表示出來源檔案的路徑,就能建立符號連結,甚至該路徑不存在都沒關係(不過建立目標不存在的符號連結也沒啥意義)。

另外,硬連結不能指向目錄,符號連結可以。這部份小弟就不太明白了,要讓硬連結能指向目錄應該也是做得出來才對。

其實小弟沒專業背景,上面是隨便看看一些資料得來的答案,有錯請包容並糾正。
頭像
d2207197
鑽研的研究生
鑽研的研究生
 
文章: 1763
註冊時間: 週二 5月 27, 2003 9:57 pm
來自: 火星


回到 debian desktop

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客

cron