Linux系統的軟鏈結和硬鏈結

2021-10-24 03:14:23 字數 3706 閱讀 6105

在linux系統中有種檔案是鏈結檔案,可以為解決檔案的共享使用。鏈結的方式可以分為兩種,一種是硬鏈結(hard link),另一種是軟鏈結(soft link)或者也稱為符號鏈結(symbolic link)。

硬鏈結是指通過索引節點來進行鏈結。

在linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都會給它分配乙個編號,這個編號被稱為索引節點編號(inode index)或者(inode),它是檔案或者目錄在乙個檔案系統中的唯一標識,檔案的實際資料放置在資料區域(data block),它儲存著檔案重要引數資訊,也就是元資料 (metadata),比如建立時間、修改時間、檔案大小、屬主、歸屬的使用者組、讀寫許可權、資料所在block號等,如下圖所示。

不過硬鏈結只能在同一檔案系統中的檔案之間進行鏈結,不能對目錄進行建立。

之所以檔案建立了硬鏈結就會防止資料誤刪,是因為檔案系統的原理是,只要檔案的索引節點還有乙個以上的鏈結(僅刪除了該檔案的指向),只刪除其中乙個鏈結並不影響索引節點本身和其他的鏈結(資料的實體並未刪除),只有當最後乙個鏈結被刪除後,此時如果有新資料要儲存到磁碟上,被刪除的檔案的資料塊及目錄的鏈結才會被釋放,空間被新資料暫用覆蓋。

軟鏈結(也叫符號鏈結),類似於windows系統中的快捷方式。

與硬鏈結不同,軟鏈結就是乙個普通檔案,只是資料塊內容有點特殊,檔案使用者資料塊中存放的內容是另一檔案的路徑名的指向,通過這個方式可以快速定位到軟連線所指向的原始檔實體。軟鏈結可對檔案或目錄建立。

便於檔案的管理

比如把乙個複雜路徑下的檔案鏈結到乙個簡單路徑下方便使用者訪問。

節省空間

解決空間不足問題,某個檔案檔案系統空間已經用完了,但是現在必須在該檔案系統下建立乙個新的目錄並儲存大量的檔案,那麼可以把另乙個剩餘空間較多的檔案系統中的目錄鏈結到該檔案系統中。

不論是硬鏈結或軟鏈結都不會將原本的檔案複製乙份,只會占用非常少量的磁碟空間。

linux系統可以用ln命令來建立鏈結檔案。

ln

[引數]

[原始檔或目錄]

[目標檔案或目錄]

-i 【互動模式,檔案存在則提示使用者是否覆蓋】

-s 【軟鏈結(符號鏈結)】

-d 【允許超級使用者製作目錄的硬鏈結】

-b 【刪除,覆蓋以前建立的鏈結】

# 軟鏈結---符號鏈結

ln -s [source]

[target]

# 硬鏈結---實體鏈結

ln[source]

[target]

yol_2626@ubuntu:~/soft_hard_links$ touch ln_file

yol_2626@ubuntu:~/soft_hard_links$ ls -li

total 0

1970524 -rw-r--r-- 2 yol_2626 yol_2626 0 8月 31 14:41 hard_ln_file

#預設不帶引數ln命令建立硬鏈結

yol_2626@ubuntu:~/soft_hard_links$ ln ln_file hard_ln_file

yol_2626@ubuntu:~/soft_hard_links$ ls -li

total 0

1970524 -rw-r--r-- 2 yol_2626 yol_2626 0 8月 31 14:41 hard_ln_file

1970524 -rw-r--r-- 2 yol_2626 yol_2626 0 8月 31 14:41 ln_file

硬鏈結是有著相同 inode 號僅檔名不同的檔案,上面原始檔和硬鏈結檔案inode號相同 (第一列就是inode號),指向同乙個索引節點。

#建立軟鏈結用s引數

yol_2626@ubuntu:~/soft_hard_links$ ln -s ln_file soft_ln_file

yol_2626@ubuntu:~/soft_hard_links$ ls -li

total 0

1970524 -rw-r--r-- 2 yol_2626 yol_2626 0 8月 31 14:41 hard_ln_file

1970524 -rw-r--r-- 2 yol_2626 yol_2626 0 8月 31 14:41 ln_file

1977054 lrwxrwxrwx 1 yol_2626 yol_2626 7 8月 31 14:44 soft_ln_file -> ln_file

yol_2626@ubuntu:~/soft_hard_links$ mkdir dir

#硬鏈結不能指向目錄

yol_2626@ubuntu:~/soft_hard_links$ ln dir hard_ln_dir

ln: dir: hard link not allowed for directory

#軟鏈結可以指向目錄

yol_2626@ubuntu:~/soft_hard_links$ ln -s dir soft_ln_dir

yol_2626@ubuntu:~/soft_hard_links$ ls -la

total 12

drwxr-xr-x 2 yol_2626 yol_2626 4096 8月 31 15:43 dir

lrwxrwxrwx 1 yol_2626 yol_2626 3 8月 31 15:45 soft_ln_dir -> dir

#刪除原始檔

yol_2626@ubuntu:~/soft_hard_links$ rm ln_file

yol_2626@ubuntu:~/soft_hard_links$ ls -li

total 4

1970524 -rw-r--r-- 1 yol_2626 yol_2626 6 8月 31 14:45 hard_ln_file

1977054 lrwxrwxrwx 1 yol_2626 yol_2626 7 8月 31 14:44 soft_ln_file -> ln_file

#列印硬鏈結檔案

yol_2626@ubuntu:~/soft_hard_links$ cat hard_ln_file

hello

#列印軟連線檔案

yol_2626@ubuntu:~/soft_hard_links$ cat soft_ln_file

cat: soft_ln_file: no such file or directory

硬鏈結檔案仍然存在,內容和原始檔內容一樣,雖然刪除原始檔,但是仍然有硬鏈結指向原始檔 inode 節點,所以不會被釋放刪除,這裡只是刪除infile到inode節點的

軟鏈結檔案已經不存在了,目錄還會顯示這個檔案,就是軟鏈結檔案已經失效。

from:【linux系統硬鏈結和軟鏈結】

Linux系統硬鏈結和軟鏈結

宣告,本篇文章 和參考了其他博主的文章,供自己學習之用 在linux系統下,有兩種鏈結檔案,一種是硬鏈結 hard link 一種是軟鏈結,也稱為符號鏈結 symbolic link ln 引數 原始檔或目錄 目標檔案或目錄 硬鏈結相當於建立了原始檔的副本,如果硬鏈結檔案的內容修改了,那麼原始檔的內...

linux系統 軟鏈結 硬鏈結

區別 硬鏈結原檔案 鏈結檔案公用乙個inode號,說明他們是同乙個檔案,而軟鏈結原檔案 鏈結檔案擁有不同的inode號,表明他們是兩個不同的檔案 在檔案屬性上軟鏈結明確寫出了是鏈結檔案,而硬鏈結沒有寫 出來,因為在本質上硬鏈結檔案和原檔案是完全平等關係 鏈結數目是不一樣的,軟鏈結的鏈結數目不會增加 ...

Linux 硬鏈結和軟鏈結

硬鏈結是通過鏈結原始檔的索引節點來進行有效鏈結。linux系統中的每個檔案都有乙個自己的索引節點,如同資料庫中的每條記錄都有自己的唯一索引一樣。自我感覺硬鏈結就像是windows下乙個檔案的拷貝,唯一不同的地方是多個該檔案的拷貝 硬鏈結 通過原始檔的索引節點來共享和更新自己的內容,一旦該節點上的任一...