Linux上ln命令詳細說明及軟鏈結和硬鏈結的區別

2021-06-19 13:06:27 字數 3105 閱讀 3364

硬鏈結(hard link)

unix檔案系統提供了一種將不同檔案鏈結至同乙個檔案的機制,我們稱這種機制為鏈結。它可以使得單個程式對同一檔案使用不同的名字。這樣的好處是檔案系 統只存在乙個檔案的副本,系統簡單地通過在目錄中建立乙個新的登記項來實現這種連線。該登記項具有乙個新的檔名和要連線檔案的inode號,檔案的目錄登記項就是所謂的檔案硬鏈結(硬鏈結,目錄登記項: 檔名-->檔案的inode;檔名可以有多個,但檔案inode只是乙個)。不論乙個檔案有多少硬鏈結,在磁碟上只有乙個描述它的inode,只要該檔案的鏈結數不為0,該檔案就保持存在。硬鏈結不能跨越檔案系統,也不能對目錄建立硬鏈結!

硬 連線是直接建立在節點表上的(inode),建立硬連線指向乙個檔案的時候,會更新節點表上面的計數值。舉個例子,乙個檔案被連線了兩次(硬連線),這 個檔案的計數值 是3,而無論通過3個檔名中的任何乙個訪問,效果都是完全一樣的,但是如果刪除其中任意乙個,都只是把計數值減1,不會刪除實際的內容的,(任何存在的 檔案本身就算是乙個硬連線)只有計數值變 成0也就是沒有任何硬連線指向的時候才會真實的刪除內容。

軟鏈結(symbolic link)舉個例子

我們拿乙個大檔案來做測驗,1.6g 大小。

[root@s14 ~]# ls -lh /home/zjw/wins2003.tar.gz

-rw-r--r-- 1 zjw zjw 1.6g jun 12 18:51 /home/zjw/wins2003.tar.gz

建立軟連線:

[root@s14 ~]# ln -s /home/zjw/wins2003.tar.gz /home/zjw/wins2003.tar.gz.symboliclink

建立硬連線:

[root@s14 ~]# ln -b /home/zjw/wins2003.tar.gz /home/zjw/wins2003.tar.gz.hardlink

檢視這幾個檔案的情況,發現:

1)硬鏈結檔案顯示跟原來檔案一樣大小1.6g,軟鏈結檔案才27個位元組;

2)硬鏈結檔案inode號跟原來檔案一樣,都是 753682,軟鏈結檔案inode號為 753685;

[zjw@s14 ~]$ ls -lih /home/zjw/wins2003.tar.gz*

753682 -rw-r--r-- 2 zjw zjw 1.6g jun 12 18:51 /home/zjw/wins2003.tar.gz

753682 -rw-r--r-- 2 zjw zjw 1.6g jun 12 18:51 /home/zjw/wins2003.tar.gz.hardlink

753685 lrwxrwxrwx 1 root root 27 jun 16 18:10 /home/zjw/wins2003.tar.gz.symboliclink -> /home/zjw/wins2003.tar.gz

上述實驗說明:

1)在同一檔案系統下,可以建立軟鏈結或硬鏈結(同檔案系統不同目錄下也可以);

2)硬鏈結的檔案顯示大小跟原檔案一樣;軟鏈結的檔案很小,只有幾十個位元組;

3)硬鏈結的檔案的inode跟原檔案一樣;軟連線的檔案有自己的inode,跟原檔案不一樣;

4)建立軟鏈結或硬鏈結檔案不會明顯占用檔案系統磁碟空間;

ln是linux中又乙個非常重要命令,它的功能是為某乙個檔案在另外乙個位置建立乙個同不的鏈結,這個命令最常用的引數是-s,具體用法是:ln –s 原始檔 目標檔案。

當我們需要在不同的目錄,用到相同的檔案時,我們不需要在每乙個需要的目錄下都放乙個必須相同的檔案,我們只要在某個固定的目錄,放上該檔案,然後在其它的目錄下用ln命令鏈結(link)它就可以,不必重複的占用磁碟空間。例如:ln –s /bin/less /usr/local/bin/less

-s 是代號(symbolic)的意思。

這裡有兩點要注意:第一,ln命令會保持每一處鏈結檔案的同步性,也就是說,不論你改動了哪一處,其它的檔案都會發生相同的變化;第二,ln的鏈結又軟鏈結和硬鏈結兩種,軟鏈結就是ln –s ** **,它只會在你選定的位置上生成乙個檔案的映象,不會占用磁碟空間,硬鏈結ln ** **,沒有引數-s, 它會在你選定的位置上生成乙個和原始檔大小相同的檔案,無論是軟鏈結還是硬鏈結,檔案都保持同步變化。

如果你用ls察看乙個目錄時,發現有的檔案後面有乙個@的符號,那就是乙個用ln命令生成的檔案,用ls –l命令去察看,就可以看到顯示的link的路徑了。

指令詳細說明

指令名稱 : ln

使用許可權 : 所有使用者

使用方式 : ln [options] source dist,其中 option 的格式為 :

[-bdfinsvf] [-s backup-suffix] [-v ]

[--help] [--version] [--]

說明 : linux/unix 檔案系統中,有所謂的鏈結(link),我們可以將其視為檔案的別名,而鏈結又可分為兩種 : 硬鏈結(hard link)與軟鏈結(symbolic link),硬鏈結的意思是乙個檔案可以有多個名稱,而軟鏈結的方式則是產生乙個特殊的檔案,該檔案的內容是指向另乙個檔案的位置。硬鏈結是存在同乙個檔案系統中,而軟鏈結卻可以跨越不同的檔案系統。

ln source dist 是產生乙個鏈結(dist)到 source,至於使用硬鏈結或軟鏈結則由引數決定。

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

-f : 鏈結時先將與 dist 同檔名的檔案刪除

-d : 允許系統管理者硬鏈結自己的目錄

-i : 在刪除與 dist 同檔名的檔案時先進行詢問

-n : 在進行軟鏈結時,將 dist 視為一般的檔案

-s : 進行軟鏈結(symbolic link)

-v : 在鏈結之前顯示其檔名

-b : 將在鏈結時會被覆寫或刪除的檔案進行備份

-s suffix : 將備份的檔案都加上 suffix 的字尾

-v method : 指定備份的方式

--help : 顯示輔助說明

--version : 顯示版本

範例 :

將檔案 yy 產生乙個 symbolic link : zz

ln -s yy zz

將檔案 yy 產生乙個 hard link : zz

ln yy xx

linux上ln命令詳細說明

ln是linux中又乙個非常重要命令,它的功能是為某乙個檔案在另外乙個位置建立乙個同不的鏈結,這個命令最常用的引數是 s,具體用法是 ln s 原始檔 目標檔案。當我們需要在不同的目錄,用到相同的檔案時,我們不需要在每乙個需要的目錄下都放乙個必須相同的檔案,我們只要在某個固定的目錄,放上該檔案,然後...

linux上ln命令詳細說明

ln是linux中又乙個非常重要命令,它的功能是為某乙個檔案在另外乙個位置建立乙個同不的鏈結,這個命令最常用的引數是 s,具體用法是 ln s 原始檔 目標檔案。當我們需要在不同的目錄,用到相同的檔案時,我們不需要在每乙個需要的目錄下都放乙個必須相同的檔案,我們只要在某個固定的目錄,放上該檔案,然後...

linux上ln命令詳細說明

ln是linux中又乙個非常重要命令,它的功能是為某乙個檔案在另外乙個位置建立乙個同不的鏈結,這個命令最常用的引數是 s,具體用法是 ln s 原始檔 目標檔案。當我們需要在不同的目錄,用到相同的檔案時,我們不需要在每乙個需要的目錄下都放乙個必須相同的檔案,我們只要在某個固定的目錄,放上該檔案,然後...