Linux Linux系統硬鏈結和軟鏈結

2022-05-19 10:50:09 字數 4789 閱讀 3535

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

檢視linux系統中哪些是鏈結檔案。

l 為符號鏈結
上**件列表中第一列許可權位標識第乙個字元顯示的是檔案型別,-為一般檔案,d為目錄,而l顯示的就是鏈結檔案。

此時每行顯示乙個檔案或者目錄的資訊。第乙個字母描述檔案型別:- 為一般檔案,d 為目錄,l 為符號鏈結。
l 為符號鏈結
硬鏈結硬鏈結是指通過索引節點來進行鏈結。在linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都會給它分配乙個編號,這個編號被稱為索引節點編號號(inode

index)或者inode,它是檔案或者目錄在乙個檔案系統中的唯一標識,檔案的實際資料放置在資料區域(data block),它儲存著檔案重要引數資訊,也就是元資料 (metadata),比如建立時間、修改時間、檔案大小、屬主、歸屬的使用者組、讀寫許可權、資料所在block號等,如下圖所示。

**於網路

在linux系統中,多個檔名指向同一索引節點(inode)是正常且允許的。一般這種鏈結就稱為硬鏈結軟鏈結

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

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

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

ln命令格式: 

ln [引數] [原始檔或目錄] [目標檔案或目錄]

主要引數:

軟鏈結 (符號鏈結) ln -s   source  target 

硬鏈結 (實體鏈結)ln       source  target

案例:

給檔案建立硬鏈結

[root@localhost tmp]# mkdir

dirin 建立測試目錄

[root@localhost tmp]# cd dirin/[root@localhost dirin]#

touch

infile

[root@localhost dirin]# ll

總用量

0-rw-r--r-- 1 root root 0 5月 31

14:53

infile

[root@localhost dirin]#

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

[root@localhost dirin]# ll

總用量

0-rw-r--r-- 2 root root 0 5月 31

14:53

infile

-rw-r--r-- 2 root root 0 5月 31

14:53 infile_hard_file

給檔案建立軟鏈結

[root@localhost dirin]# ln -s infile infile_soft_file    建立軟鏈結用s引數

[root@localhost dirin]#

ls -l

總用量

0-rw-r--r-- 2 root root 0 5月 31

14:53

infile

-rw-r--r-- 2 root root 0 5月 31

14:53

infile_hard_file

lrwxrwxrwx

1 root root 6 5月 31

15:03

infile_soft_file -> infile 軟鏈結

我們知道硬鏈結是有著相同 inode 號僅檔名不同的檔案,用ls命令檢視。

[root@localhost dirin]# ls -li

1177358 -rw-r--r-- 2 root root 0 5月 31

14:53

infile

1177358 -rw-r--r-- 2 root root 0 5月 31

14:53

infile_hard_file

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

1177363 lrwxrwxrwx 1 root root 6 5月 31

15:03 infile_soft_file -> infile 軟鏈結是乙個鏈結檔案,檔案模式那塊前面有個l字母,表示是個鏈結檔案。

硬鏈結不能指向目錄

[root@localhost dirin]# ln

dirinfile dir是個目錄

ln: "

dir": 不允許將硬鏈結指向目錄

軟鏈結可以
[root@localhost dirin]# ll -i

201884844 drwxr-xr-x 2 root root 19 5月 31

15:21

dir1177358 -rw-r--r-- 3 root root 0 5月 31

14:53

infile

1177358 -rw-r--r-- 3 root root 0 5月 31

14:53

infile_hard_file

1177363 lrwxrwxrwx 1 root root 6 5月 31

15:03 infile_soft_file ->infile

1177365 lrwxrwxrwx 1 root root 3 5月 31

15:24 infile_soft_file_name -> dir

刪除檔案測試:

[root@localhost dirin]# echo

"this a file

" >infile 向檔案中新增資料

[root@localhost dirin]#

catinfile 檢視檔案內容

this a

file

[root@localhost dirin]#

catinfile_hard_file infile_soft_file 檢視軟鏈結和硬鏈結檔案內容一致

this a

file

this a

file

[root@localhost dirin]#

rm -f infile 刪除原始檔

[root@localhost dirin]#

ls -lrti

1177363 lrwxrwxrwx 1 root root 6 5月 31

15:03

infile_soft_file ->infile

201884844 drwxr-xr-x 2 root root 19 5月 31

15:21

dir1177365 lrwxrwxrwx 1 root root 3 5月 31

15:24 infile_soft_file_name -> dir

1177358 -rw-r--r-- 2 root root 12 5月 31

15:27

infile_hard_file

[root@localhost dirin]#

catinfile_hard_file 硬鏈結檔案存在 內容和原始檔內容一樣。

原因:雖然刪除原始檔,但是任然有硬鏈結指向原始檔inode

節點,所以不會被釋放刪除,

這裡只是刪除infile到inode節點的鏈結。

this a

file

[root@localhost dirin]#

catinfile_soft_file 軟鏈結檔案已經不存在了,目錄還會顯示這個檔案,

就是軟鏈結檔案已經失效。

cat: infile_soft_file: 沒有那個檔案或目錄

刪除軟鏈結
[root@localhost dirin]# rm -f infile_soft_file   直接刪除這個軟鏈結檔案就行

[root@localhost dirin]# ll

drwxr-xr-x 2 root root 19 5月 31

15:21

dir-rw-r--r-- 2 root root 12 5月 31

15:27

infile_hard_file

lrwxrwxrwx

1 root root 3 5月 31

15:24 infile_soft_file_name -> dir

linux系統鏈結 硬鏈結

在linux系統中,鏈結可分為兩種 一種為硬鏈結 hard link 另一種為軟鏈結或符號鏈結 symbolic link or soft link ln這個命令就是建立鏈結檔案的。在預設不帶引數的情況下,執行ln命令建立的鏈結是硬鏈結。如果帶 s建立鏈結則為軟鏈結。硬鏈結是指通過索引節點 inod...

linux系統 軟鏈結 硬鏈結

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

音效卡 linux linux系統檢視自己的硬體資訊

宣告 雖然我今天寫得快,但完全是我自己原創的,都是乙個字乙個字打出來的,圖也是我現在抓拍的圖,一邊寫一邊拍的圖,盡量寫得簡單些是為了方便初學者,我有多年的做論壇版主回答新手問題的經驗,所以比較了解初學者。必須要提醒初學者乙個問題是 沒有驅動程式和不能用是兩個不同的概念,雖然linux現在的硬體普遍支...