原文地址:http://www./index.php/2010/07/symbol-hard-links/
Linux/Unix中有兩種鏈接,硬鏈接和軟鏈接,均由ln命令來創(chuàng)建。
ln -s /home/m/.vimrc /media/Elements/115/vimrc
軟鏈接
軟鏈接使用ln命令的-s選項(xiàng)創(chuàng)建:
1
|
ln -s source filename #創(chuàng)建source文件的軟鏈接target(目的地址)
|
軟鏈接類似于Windows中的快捷方式,內(nèi)部保存的是源文件的路徑,路徑可以是相對(duì)路徑,也可以是絕對(duì)路徑:
1
2
3
4
5
6
|
dutor@dutor-desktop:~$ ln -s gvim.tgz gvim
dutor@dutor-desktop:~$ ln -s /home/dutor/gvim.tgz gvim2
dutor@dutor-desktop:~$ ll gvim* # alias ll='ls -l'
lrwxrwxrwx 1 dutor dutor 8 2010-07-01 20:32 gvim -> gvim.tgz
lrwxrwxrwx 1 dutor dutor 20 2010-07-01 20:33 gvim2 -> /home/dutor/gvim.tgz
-rw-r--r-- 1 dutor dutor 8.5M 2010-06-29 23:06 gvim.tgz
|
軟鏈接應(yīng)用十分廣泛。 在文件系統(tǒng)中多處共享同一個(gè)較大文件時(shí),使用軟鏈接就可以避免創(chuàng)建多個(gè)副本。 維護(hù)動(dòng)態(tài)庫(kù)文件的版本時(shí),使用軟鏈接,在升級(jí)庫(kù)文件后,只需修改軟鏈接的源文件,而使用該庫(kù)的程序則不需要修改。
硬鏈接
不帶有任何選項(xiàng)的ln命令即可創(chuàng)建硬鏈接:
1
|
ln source target #創(chuàng)建source文件的硬鏈接target
|
硬鏈接創(chuàng)建后,鏈接文件與源文件沒有主次之分,文件系統(tǒng)中它們都和同一個(gè)inode相關(guān)聯(lián),即具有相同的inode號(hào):
1
2
3
4
|
dutor@dutor-desktop:~$ ln gvim.tgz gvim
dutor@dutor-desktop:~$ ll -i gvim*
1048032 -rw-r--r-- 2 dutor dutor 8.5M 2010-06-29 23:06 gvim # 第3個(gè)域代表該文件的鏈接數(shù)
1048032 -rw-r--r-- 2 dutor dutor 8.5M 2010-06-29 23:06 gvim.tgz
|
因此,系統(tǒng)不允許用戶為目錄創(chuàng)建硬件鏈接,否則,目錄樹就不再是有向無環(huán)的了。只許州官放火,不許百姓點(diǎn)燈,系統(tǒng)卻可以為目錄“創(chuàng)建”硬鏈接(系統(tǒng)知道自己在做什么,卻不知用戶會(huì)做什么),那就是.和..分別指向當(dāng)前目錄和上級(jí)目錄。因此每個(gè)目錄的鏈接數(shù)至少是2.
另外,由于硬鏈接的實(shí)現(xiàn)依賴于特定的文件系統(tǒng),因此不可以跨文件系統(tǒng)。而軟鏈接是基于路徑的,所以只要是掛載在系統(tǒng)目錄樹中的文件或目錄,都可以創(chuàng)建軟鏈接。
完
|