ln命令 軟鏈結與硬鏈結的區別與應用

2022-05-08 11:36:16 字數 3049 閱讀 1279

linux系統中,鏈結是乙個十分常見且實用的檔案處理命令,它分為軟鏈結和硬鏈結兩種型別。軟鏈結類似於windows中的快捷方式,硬鏈結又有著與原檔案保持同步更新的特性,兩種鏈結方式各有特點,也各有其應用。接下來我們一起來深入認識一下這兩種鏈結方式。

英文原意:link

命令所在路徑:/bin/ln

執行許可權:所有使用者

語法:

ln -s [原檔案] [目標檔案]

-s 建立軟鏈結

預設是硬鏈結(不指定-s)

範例:

(1)lrwxrwxrwx其中l表示軟鏈結。任何新建的軟鏈結檔案許可權都為rwxrwxrwx,此許可權不決定原檔案許可權

(2) 檔案大小-只是符號鏈結,非常小,一般只有十幾個位元組,與原檔案大小無關

(3)/tmp/issue.soft->/etc/issue箭頭指向原檔案

(1) 相當於 拷貝(cp -p) + 同步更新 的功能

實驗:這裡預設已經執行了範例中的命令建立了軟/硬鏈結

[root@centos7-master /]# cat /etc/issue #檢視當前原檔案內容

\skernel \r on an \m

[root@centos7-master /]# cat /tmp/issue.hard #檢視當前硬鏈結內容

\skernel \r on an \m

[root@centos7-master /]# echo "this is a test" >> /etc/issue #向原檔案末尾追加新內容

[root@centos7-master /]# cat /etc/issue #檢視更新後原檔案內容

\skernel \r on an \m

this is a test

\skernel \r on an \m

this is a test #可以看到,這裡硬鏈結與原檔案保持了同步更新

[root@centos7-master /]# rm /etc/issue #刪除原檔案

rm: remove regular file 『/etc/issue』? y

[root@centos7-master /]# cat /tmp/issue.soft #檢驗軟鏈結是否仍有效

cat: /tmp/issue.soft: no such file or directory

[root@centos7-master /]# cat /tmp/issue.hard #原檔案就算刪除或丟失,硬鏈結依然可以訪問

\skernel \r on an \m

this is a test

上述實驗我們可以看到,原檔案有修改和更新,則硬鏈結也同步會進行更新;且原檔案就算刪除或丟失,硬鏈結依然可以訪問,即如同拷貝(cp -p) + 同步更新功能。

(2) 可通過i節點識別。

乙個檔案一定有乙個i節點,乙個i節點不一定只對應乙個檔案。某檔案的i節點和某檔案的硬鏈結的i節點一般相同。當我們把原檔案刪除,硬鏈結依然會對映到對應的i節點。

實驗:軟鏈結很好判斷,如果軟鏈結對應的原檔案被刪除後,我們通過ls檢視軟鏈結的檔案資訊,會發現軟鏈結被標紅,並不停閃爍。

如何判斷硬鏈結呢?我們分別建立軟/硬鏈結後檢視i節點編號。

[root@centos7-master tmp]# cd /tmp

[root@centos7-master tmp]# ln issue.bak issue.bak.hard

[root@centos7-master tmp]# ln -s issue.bak issue.bak.soft

[root@centos7-master tmp]# ls -i issue.bak issue.bak.hard issue.bak.soft

8395173 issue.bak 8395173 issue.bak.hard 9116906 issue.bak.soft

可以看到,原檔案的i節點編號是8395173,硬鏈結也是對應8395173編號的i節點的乙個對映,而軟鏈結的i節點編號則不同。

這樣我們也可以十分容易理解為什麼硬鏈結可以同步更新了,因為當我們對原檔案進行修改操作時,在核心層面來看,這個操作實際上是針對對應的i節點進行操作,因為該i節點同時對映到了兩個檔案,所以硬鏈結也自然能體現出同步更新。

(3) 硬鏈結不能跨分割槽,但軟鏈結可以

[root@centos7-master tmp]# ln /tmp/issue.bak /boot/issue.bak.hard

ln: failed to create hard link 『/boot/issue.bak.hard』 => 『/tmp/issue.bak』: invalid cross-device link # 根分割槽/ 和 /boot分割槽不屬於同乙個分割槽

[root@centos7-master tmp]# ln -s /tmp/issue.bak /boot/issue.bak.soft

這相當於在windows下將c盤的乙個檔案硬鏈結到d盤,是不被系統允許的。

(4) 硬鏈結不能針對目錄使用,但軟鏈結可以

[root@centos7-master tmp]# ln /tmp /root/tmp.hard

ln: 『/tmp』: hard link not allowed for directory

[root@centos7-master tmp]# ln -s /tmp /root/tmp.soft

這相當於在windows下將d盤的乙個目錄軟鏈結到桌面,系統是允許的。

硬鏈結使用場景並不多,但可以將其作為乙個實時備份來使用。

ln 軟鏈結與硬鏈結

linux unix中有兩種鏈結,硬鏈結和軟鏈結,均由ln命令來建立。ln s home m vimrc media elements 115 vimrc 軟鏈結1ln ssource filename 建立source檔案的軟鏈結target 目的位址 123 456dutor dutor des...

ln 硬鏈結與軟鏈結

新建硬鏈結 軟鏈結ln 歡迎來到來到大浪濤天的部落格!ln 命令可以理解為link,其功能是建立檔案間的鏈結,鏈結包括硬鏈結和軟鏈結 ln option source target 無引數 建立硬鏈結 s 建立軟連線 符號鏈結 硬鏈結硬鏈結是指通過索引節點來進行鏈結,在linux ex2,ex3,e...

ln命令 軟鏈結和硬鏈結

1.軟連線 軟鏈結又叫符號鏈結,這個檔案包含了另乙個檔案的路徑名。可以是任意檔案或目錄,可以鏈結不同檔案系統的檔案 類似於windows的快捷方式 2.硬鏈結 所謂鏈結無非是把檔名和計算機檔案系統使用的節點號鏈結起來。因此我們可以用多個檔名與同乙個檔案進行鏈結,這些檔名可以在同一目錄或不同目錄 這樣...