Unix連接知識(shí)講解之文件的連接和符號(hào)連接
Unix系統(tǒng)中使用i節(jié)點(diǎn)(i node)來(lái)記錄真實(shí)的物理文件及其位置,文件名只是指向i節(jié)點(diǎn)的一個(gè)Unix連接。因此每個(gè)文件可以有多個(gè)名字,每個(gè)名字就稱為文件的一個(gè)連接,而同一個(gè)文件的所有連接所指向的i節(jié)點(diǎn)件完全相同。
但在刪除時(shí)只有全部刪除這個(gè)i節(jié)點(diǎn)的全部Unix連接,才能刪除i節(jié)點(diǎn)、即刪除這個(gè)文件本身。
- $ ln l1 l2
- $ ls -l l*
- -rwxr-xr-x 2 user wheel 53212 Dec 4 12:36 l1
- -rwxr-xr-x 2 user wheel 53212 Dec 4 12:36 l2
- $
上面的例子使用ln創(chuàng)建了一個(gè)Unix連接,然后在ls的結(jié)果中可以看到第二列的數(shù)字為2,這表示這個(gè)文件有兩個(gè)連接。這樣的連接可以建立在不同的目錄中,但所有連接所在的目錄必須在同一個(gè)文件系統(tǒng)中,才能使用同樣的i節(jié)點(diǎn)。由于連接是直接指向標(biāo)識(shí)物理文件的i節(jié)點(diǎn),因此這種連接又稱為硬連接。
另一種更靈活的連接方式是符號(hào)Unix連接,它沒(méi)有指向物理文件的i節(jié)點(diǎn),而是直接指向目錄樹(shù)上的另一個(gè)入口,那么當(dāng)系統(tǒng)訪問(wèn)這個(gè)文件時(shí),就沿著它指向的目錄樹(shù)的位置去查找具體文件。
這樣就能對(duì)任何文件系統(tǒng)中的文件和目錄建立Unix連接,因此稱為軟連接。符號(hào)連接可以跨越文件系統(tǒng),靈活性很大,能夠突破物理文件系統(tǒng)的限制維護(hù)目錄樹(shù)的一致性,對(duì)于系統(tǒng)管理和維護(hù)很有用。
但是這種連接方式需要對(duì)目錄樹(shù)進(jìn)行多次查找,增加了文件操作的額外步驟,因此效率較低,因此不應(yīng)該使用多級(jí)連接,及某個(gè)符號(hào)連接指向的目錄還是一個(gè)符號(hào)連接,甚至發(fā)生符號(hào)Unix連接的循環(huán)。應(yīng)該盡量少用符號(hào)Unix連接,并避免多級(jí)符號(hào)連接及符號(hào)Unix連接的循環(huán)。
- $ ln -s l1 /root/files
- $ ls -l l*
- lrwxrwxrwx 1 user wheel 12 Dec 4 12:36 l1 -> /root/files
- $
【編輯推薦】