軟連結檔案和硬連結檔案
連結檔案分為兩種,硬連結(hard link)和軟連結(symbolic link)。 兩種連結的本質差別關鍵點在于inode。
硬連結:
當系統要讀一個檔案時,就會先去讀inode table,一個檔案對應一個inode,然後再去根據inode中的資訊到塊區域去将資料取出來。 而硬連結是直接使用了和源檔案相同的inode,硬連結檔案直接連結到檔案放置的塊區域。 也就是說,進行硬連結的時候實際上該檔案内容沒有任何變化,隻是指定了相同的inode。
硬連結有兩個限制:
(1)不能誇檔案系統,因為不同的檔案系統有不同的inode table;
(2)不能連結目錄。
軟連結:
跟硬連結不同,這個是建立一個獨立的檔案,而這個檔案的作用是當讀取這個連結檔案時,它會把讀取的行為轉發到該檔案所link的檔案上。這樣講,也許比較繞口。
例:現在有檔案a,我們做了一個軟連結檔案b(隻是一個連結檔案,非常小),b指向了檔案a。當讀取b時,那麼b就會把讀取的動作轉發到a上,這樣就讀取到了檔案a。是以,當我們删除檔案a時,檔案b不會被删除,但是再讀取b時,會提示無法打開檔案。然而,當我們删除b時,a是不會有任何影響的。
看樣子,似乎硬連結比較安全,因為即使某一個檔案被删除了,隻要有任何一個檔案存在,那麼該檔案對應的inode就還在,那麼檔案就不會消失不見!不過,不幸的是,由于硬連結的限制太多了,包括無法做目錄的link,是以在用途上面是比較受限的!反而是軟連結的使用方向較廣!
那麼如何建立軟連結和硬連結呢?這就要用到 ln 指令。
文法:ln [-s][來源檔案][目标檔案]
ln常用的選項就一個 -s, 如果不加就是建立硬連結,加上就是建立軟連結。
[root@qiangzi ~]# mkdir 123[root@qiangzi ~]# cd 123 (cd指令:切換工作目錄)[root@qiangzi 123]# cp /etc/passwd ./ (cp指令:拷貝)[root@qiangzi 123]# ll (ll指令:ll會列出該檔案下的所有檔案資訊,包括隐藏的檔案,而ls -l隻列出顯式檔案,說明這兩個指令還是不等同的!)總用量 12-rw-r--r-- 1 root root 1258 12月 25 01:58 passwd
[root@qiangzi 123]# du -sk (du指令:du(disk usage)指令可以計算檔案或目錄所占的磁盤空間。沒有指定任何選項時,它會測量目前工作目錄與其所有子目錄,分别顯示各個目錄所占的快數,最後才顯示工作目錄所占總快數)20 .
[root@qiangzi 123]# ln passwd passwd-hard[root@qiangzi 123]# ll總用量 16-rw-r--r-- 2 root root 1258 12月 25 01:58 passwd
-rw-r--r-- 2 root root 1258 12月 25 01:58 passwd-hard
[root@qiangzi 123]# du -sk20
[root@qiangzi 123]# ll總用量 16-rw-r--r-- 2 root root 1258 12月 25 01:58 passwd
-rw-r--r-- 2 root root 1258 12月 25 01:58 passwd-hard
[root@qiangzi 123]# rm -f passwd (删除目錄和檔案)這個指令是最常用的[root@qiangzi 123]# du -sk20 .
删除源檔案passwd,空間依舊不變。
[root@qiangzi 123]# cd ..[root@qiangzi ~]# in 123 456ln:"123":不允許将硬連結指向目錄
硬連結不能用于目錄。
[root@qiangzi ~]# mkdir 456[root@qiangzi ~]# cd 456[root@qiangzi 456]# cp /etc/passwd ./[root@qiangzi 456]# ln -s passwd passwd-soft[root@qiangzi 456]# ll總用量 4-rw-r--r-- 1 root root 1258 12月 25 02:30 passwd
lrwxrwxrwx 1 root root 6 12月 25 02:30 passwd-soft -> passwd
[root@qiangzi 456]# head -n 1 passwd-softroot:x:0:0:root:/root:/bin/bash
[root@qiangzi 456]# head -n 1 passwdroot:x:0:0:root:/root:/bin/bash
[root@qiangzi 456]# rm -f passwd[root@qiangzi 456]# head -n 1 passwd-softhead: 無法打開"passwd-soft" 讀取資料: 沒有那個檔案或目錄
[root@qiangzi 456]# ll總用量 0lrwxrwxrwx 1 root root 6 12月 25 02:30 passwd-soft -> passwd
(passwd一直在閃爍)
如果删除掉源檔案,則軟連結檔案不能讀取了,而且使用指令ll檢視發現顔色也變了。
[root@qiangzi 456]# cd ..[root@qiangzi ~]# ln -s 456 789[root@qiangzi ~]# ls -ld 456 789drwxr-xr-x 2 root root 4096 12月 25 02:36 456lrwxrwxrwx 1 root root 3 12月 25 02:45 789 -> 456