2.鏈接文件
Linux具有為一個(gè)文件起多個(gè)名字的功能,稱為鏈接。被鏈接的文件可以存放在相同的或不同的目錄下。如果在同一目錄下,二者必須有不同的文件名,而不用
在硬盤上為同樣的數(shù)據(jù)重復(fù)備份;如果在不同的目錄下,那么被鏈接的文件可以與原文件同名,只要對(duì)一個(gè)目錄下的該文件進(jìn)行修改,就可以完成對(duì)所有目錄下同名
鏈接文件的修改。對(duì)于某文件的各個(gè)鏈接文件,我們可以給它們指定不同的存取權(quán)限,以控制對(duì)信息的共享和增強(qiáng)安全性。
文件鏈接分為硬鏈接和符號(hào)鏈接兩種形式。
(1) 硬鏈接
建立硬鏈接時(shí),是在另外的目錄或本目錄中增加目標(biāo)文件的一個(gè)目錄項(xiàng),這樣,一個(gè)文件就登記在多個(gè)目錄中。圖3中所示的m2.c文件就在目錄mub1和liu中都建立了目錄項(xiàng)。

圖3 文件鏈接
創(chuàng)建硬鏈接后,已經(jīng)存在的文件的I節(jié)點(diǎn)號(hào)(inode)會(huì)被多個(gè)目錄文件項(xiàng)使用。一個(gè)文件的硬鏈接數(shù)可以在目錄的長(zhǎng)列表格式的第二列中看到,無額外鏈接的文件的鏈接數(shù)為1。
ln命令用來創(chuàng)建鏈接。默認(rèn)情況下,ln命令創(chuàng)建硬鏈接。ln命令會(huì)增加鏈接數(shù),rm命令會(huì)減少鏈接數(shù)。一個(gè)文件除非鏈接數(shù)為0,否則不會(huì)物理地從文件系統(tǒng)中被刪除。
對(duì)硬鏈接有如下限制:
◆不能對(duì)目錄文件做硬鏈接。
◆不能在不同的文件系統(tǒng)之間做硬鏈接。也就是說,鏈接文件和被鏈接文件必須位于同一個(gè)文件系統(tǒng)中。
(2)符號(hào)鏈接
符號(hào)鏈接也稱軟鏈接,是將一個(gè)路徑名鏈接到一個(gè)文件。這些文件是一種特別類型的文件。事實(shí)上,它只是一個(gè)小文本文件(如圖3中的abc文件),其中包含它
所鏈接的目標(biāo)文件的絕對(duì)路徑名,如圖3中虛線箭頭所示。被鏈接文件是實(shí)際上包含所有數(shù)據(jù)的文件。所有讀寫文件的命令,當(dāng)它們涉及符號(hào)鏈接文件時(shí),將沿著鏈
接方向前進(jìn),找到實(shí)際的文件。
和硬鏈接不同的是,符號(hào)鏈接確實(shí)是一個(gè)新文件,它具有與目標(biāo)文件不同的I節(jié)點(diǎn)號(hào);而硬鏈接并沒有建立新文件。
符號(hào)鏈接沒有硬鏈接的限制,可以對(duì)目錄文件做符號(hào)鏈接,也可以在不同文件系統(tǒng)之間做符號(hào)鏈接。
用“ln -s”命令建立符號(hào)鏈接時(shí),最好源文件用絕對(duì)路徑名,這樣可以在任何工作目錄下進(jìn)行符號(hào)鏈接。當(dāng)源文件用相對(duì)路徑時(shí),如果當(dāng)前的工作路徑和你要?jiǎng)?chuàng)建的符號(hào)鏈接文件所在路徑不同時(shí),就不能進(jìn)行鏈接。
請(qǐng)注意,符號(hào)鏈接與源文件或目錄之間的區(qū)別:
◆刪除源文件或目錄時(shí),只刪除了數(shù)據(jù),不會(huì)刪除鏈接。一旦以同樣文件名創(chuàng)建了源文件,鏈接將繼續(xù)指向該文件的新數(shù)據(jù)。
◆在目錄長(zhǎng)列表中,符號(hào)鏈接作為一種特殊的文件類型顯示出來,其第一個(gè)字母是l。
◆符號(hào)鏈接的大小是其鏈接文件的路徑名中的字節(jié)數(shù)。
◆當(dāng)用“ls -l”命令列出文件時(shí),可以看到符號(hào)鏈接名后有一個(gè)箭頭指向源文件或目錄,例如:lrwxrwxrwx ... 14 Jun 20 10:20 /etc/motd->/original_file
上面代碼中,表示“文件大小”的數(shù)字“14”恰好表示源文件名“/original_file”由14個(gè)字符構(gòu)成。
ln命令的一般格式:
ln [選項(xiàng)] 源文件 [目標(biāo)文件]
鏈接的對(duì)象可以是文件,也可以是目錄。如果鏈接指向目錄,用戶就可以利用該鏈接直接進(jìn)入被鏈接的目錄,而不用給出到達(dá)該目錄的一長(zhǎng)串路徑。這樣,即使刪除這個(gè)鏈接,也不會(huì)破壞原來的目錄。
選項(xiàng)-s表示建立符號(hào)鏈接,而不是硬鏈接。
注意,符號(hào)鏈接文件不是一個(gè)獨(dú)立的文件,它的許多屬性依賴于原文件,所以給一個(gè)符號(hào)鏈接文件設(shè)置存取權(quán)限是沒有意義的。
(3)示例
◆將目錄/home/mengqc/mub1下的文件m2.c鏈接到目錄/home/liu下的文件a2.c:
$ cd /home/mengqc
$ ln mub1/m2.c /home/liu/a2.c
|
在執(zhí)行l(wèi)n命令之前,目錄/home/liu中不存在a2.c文件。執(zhí)行l(wèi)n之后,在/home/liu目錄中才有a2.c這一項(xiàng),表明m2.c和a2.c已經(jīng)鏈接起來。注意,二者在物理上是同一個(gè)文件。利用“ls -l”命令可以看到鏈接數(shù)的變化。
◆在目錄/home/liu下建立一個(gè)符號(hào)鏈接文件abc,使它指向目錄/home/mengqc/mub1:
$ ln -s /home/mengqc/mub1 /home/liu/abc
執(zhí)行該命令后,/home/mengqc/mub1代表的路徑將存放在名為/home/liu/abc的文件中。
原文:http://hi.baidu.com/%C4%F4%D3%C22010/blog/item/f36abe1e749d2b64f624e4ae.html