linux 軟連線和硬鏈結的區別

2021-10-14 03:14:44 字數 1444 閱讀 1141

預設不帶引數情況下,ln命令建立的是硬鏈結。

硬鏈結原檔案&鏈結檔案公用乙個inode號,說明他們是同乙個檔案,而軟鏈結原檔案&鏈結檔案擁有不同的inode號,表明他們是兩個不同的檔案;

在檔案屬性上軟鏈結明確寫出了是鏈結檔案,而硬鏈結沒有寫出來。

4點不同 :

(1)軟連線可以 跨檔案系統 ,硬連線不可以 。實踐的方法就是用共享檔案把windows下的 aa.txt文字文件連線到linux下/root目錄 下 bb,cc . ln -s aa.txt/root/bb 連線成功 。ln aa.txt /root/bb 失敗 。

(2)關於 i節點的問題 。硬連線不管有多少個,都指向的是同乙個i節點,會把 結點連線數增加 ,只要結點的連線數不是 0,檔案就一直存在 ,不管你刪除的是原始檔還是 連線的檔案 。只要有乙個存在 ,檔案就 存在 (其實也不分什麼 原始檔連線檔案的 ,因為他們指向都是同乙個 i節點)。 當你修改原始檔或者連線檔案任何乙個的時候 ,其他的 檔案都會做同步的修改 。軟鏈結不直接使用i節點號作為檔案指標,而是使用檔案路徑名作為指標。所以 刪除連線檔案 對原始檔無影響,但是 刪除 原始檔,連線檔案就會找不到要指向的檔案 。軟鏈結有自己的inode,並在磁碟上有一小片空間存放路徑名.

(3)軟連線可以對乙個不存在的檔名進行連線 。

(4)軟連線可以對目錄進行連線。

備註:i節點 :它是unix內部用於描述檔案特性的資料結構.我們通常稱i節點為檔案索引結點(資訊結點).i節點 含有關於檔案的大部分的重要信 息,包括檔案資料塊在

磁碟上的位址.每乙個i節點有它自己的標誌號,我們稱為檔案順序號.i節點包含的資訊 1.檔案型別 2.檔案屬主關係 3.檔案的訪問許可權 4.檔案的時間截.

目錄檔案無法建立硬鏈結,只有檔案才可以建立硬鏈結。

硬鏈結無法跨越檔案系統,即不能再不同分割槽上的檔案建立硬鏈結。

int link(const char *oldpath,const char *newpath);//建立硬鏈結函式,為乙個已經存在的檔案建立乙個新的硬鏈結,oldpath表示已經存在的檔案。

int unlink(const char *pathname);//刪除硬鏈結函式。刪除符號鏈結也是用的這個函式

符號鏈結

符號鏈結是通過檔名稱來指向另乙個檔案的,因此符號鏈結檔案和原始檔的索引節點號並不同,一旦將原始檔刪除。那麼符號鏈結檔案就會無效

int symlink(const char *oldpath,const char *newpath);//建立符號鏈結函式

ssize_t readlink(const char *path, char *buf,size_t bufsize);//開啟符號鏈結並獲取檔名稱。

linux 軟連線和硬鏈結的區別

1 軟連線可以 跨檔案系統 硬連線不可以 實踐的方法就是用共享檔案把windows下的 aa.txt文字文件連線到linux下 root目錄 下 bb.ln s aa.txt root bb 連線成功 ln aa.txt root bb 失敗 2 關於 i節點的問題 硬連線不管有多少個,都指向的是同...

Linux硬鏈結和軟連線的區別

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

Linux硬鏈結和軟連線的區別

硬連線指通過索引節點來進行連線。在 linux 的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配乙個編號,稱為索引節點號 inode index 在 linux 中,多個檔名指向同一索引節點是存在的。比如 a 是 b 的硬鏈結 a 和 b 都是檔名 則 a 的目錄項中的 inode 節...