文章作者:Tyan
博客:noahsnail.com | CSDN | 簡(jiǎn)書
鏈接文件是Linux文件系統(tǒng)的一個(gè)優(yōu)勢(shì),它可以保存一份物理文件副本和多個(gè)虛擬副本。這種虛擬的副本稱為鏈接。鏈接是目錄中指向文件真實(shí)位置的占位符。Linux系統(tǒng)中有兩種鏈接:符號(hào)鏈接和硬鏈接。
1. ln -s
符號(hào)鏈接是實(shí)實(shí)在在的文件,它指向虛擬目錄結(jié)構(gòu)中某個(gè)地方的另一個(gè)文件。兩個(gè)文件通過符號(hào)鏈接在一起,內(nèi)容并不相同。要為一個(gè)文件創(chuàng)建一個(gè)符號(hào)鏈接,原始文件必須存在。ln -s命令用來創(chuàng)建符號(hào)鏈接。
# 命令形式:ls -s source_file_name link_filename
# 創(chuàng)建符號(hào)鏈接
$ ln -s test b
# b為鏈接文件,test為源文件,`->`符號(hào)表明該文件是一個(gè)鏈接文件,文件b的大小與test不一樣。
$ ls -l
total 8
-rw-r--r-- 1 *** staff 0 11 13 13:52 a
lrwxr-xr-x 1 *** staff 4 11 13 15:11 b -> test
-rw-r--r-- 1 *** staff 0 11 13 13:13 test
2. ln
硬連接會(huì)創(chuàng)建獨(dú)立的虛擬文件,其中包含了原始文件的位置和信息,但它們從根本上是一個(gè)文件,引用硬連接文件就等同于引用了源文件。創(chuàng)建硬連接時(shí)源文件也必須存在,不過ln命令不需要加上-s參數(shù)。
# 命令形式:ls source_file_name link_filename
# 創(chuàng)建硬連接
$ ln test c
# c為硬鏈接文件
$ ls -l
total 8
-rw-r--r-- 1 *** staff 0 11 13 13:52 a
lrwxr-xr-x 1 *** staff 4 11 13 15:11 b -> test
-rw-r--r-- 2 *** staff 0 11 13 13:13 c
-rw-r--r-- 2 *** staff 0 11 13 13:13 test
# c和test的inode編碼是一樣的,且它們的文件大小也是一樣的。
$ ls -li
total 8
6558451 -rw-r--r-- 1 *** staff 0 11 13 13:52 a
6559485 lrwxr-xr-x 1 *** staff 4 11 13 15:11 b -> test
6557711 -rw-r--r-- 2 *** staff 0 11 13 13:13 c
6557711 -rw-r--r-- 2 *** staff 0 11 13 13:13 test
參考文獻(xiàn):
- Linux命令行與shell腳本編程大全(第三版)