Unix系統中使用i節點(i node)來記錄真實的物理文件及其位置,文件名只是指向i節點的一個Unix連接。因此每個文件可以有多個名字,每個名字就稱為文件的一個連接,而同一個文件的所有連接所指向的i節點件完全相同。
但在刪除時只有全部刪除這個i節點的全部Unix連接,才能刪除i節點、即刪除這個文件本身。
- $ 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創建了一個Unix連接,然後在ls的結果中可以看到第二列的數字為2,這表示這個文件有兩個連接。這樣的連接可以建立在不同的目錄中,但所有連接所在的目錄必須在同一個文件系統中,才能使用同樣的i節點。由於連接是直接指向標識物理文件的i節點,因此這種連接又稱為硬連接。
另一種更靈活的連接方式是符號Unix連接,它沒有指向物理文件的i節點,而是直接指向目錄樹上的另一個入口,那麼當系統訪問這個文件時,就沿著它指向的目錄樹的位置去查找具體文件。
這樣就能對任何文件系統中的文件和目錄建立Unix連接,因此稱為軟連接。符號連接可以跨越文件系統,靈活性很大,能夠突破物理文件系統的限制維護目錄樹的一致性,對於系統管理和維護很有用。
但是這種連接方式需要對目錄樹進行多次查找,增加了文件操作的額外步驟,因此效率較低,因此不應該使用多級連接,及某個符號連接指向的目錄還是一個符號連接,甚至發生符號Unix連接的循環。應該盡量少用符號Unix連接,並避免多級符號連接及符號Unix連接的循環。
- $ ln -s l1 /root/files
- $ ls -l l*
- lrwxrwxrwx 1 user wheel 12 Dec 4 12:36 l1 -> /root/files
- $