前言
插播一下檔案的軟硬連結,其實也與檔案系統相關。了解了硬連結和軟連結也能夠更好的了解檔案系統
硬連結,符号連結
- 硬連結:不同的目錄條目中指向相同的資料塊内容
- 符号連結:其目錄條目中,存放的是另一個路徑的檔案名,檔案大小為存放路徑字元個數,權限都為777
硬連結
ln src dest
- 隻能對檔案建立,不能應用與目錄 避免循環引用
- 目錄硬連結的數是2
- 不能跨檔案系統,因為inode不同
- 建立硬連結會增加檔案被連結的次數
[ubpara link]$ls -il
總用量 8
660108 -rw-rw-r-- 1 ubpara ubpara 9 5月 14 19:41 a
660109 drwxrwxr-x 2 ubpara ubpara 4096 5月 14 19:42 test
[ubpara link]$ln a test/a
[ubpara link]$ls -il test/
總用量 4
660108 -rw-rw-r-- 2 ubpara ubpara 9 5月 14 19:41 a
[ubpara link]$ls -il
總用量 8
660108 -rw-rw-r-- 2 ubpara ubpara 9 5月 14 19:41 a
660109 drwxrwxr-x 2 ubpara ubpara 4096 5月 14 19:42 test
[ubpara link]$
在test中建立a的一個硬連結 其inode号不變,表示目前目錄的檔案a和test目錄下的檔案a都指向相同的資料塊。
660108 -rw-rw-r-- 2 ubpara ubpara 9 5月 14 19:41 a
2 代表硬連結數,從1變為2,若删除其中一個,硬連結數減1
軟連結,符号連結
ln -s -v src dest
- 可應用與目錄
- 可以跨檔案系統
- 不會增加被連結檔案的連結次數
- 其大小為其執行的路徑所包含的字元個數
[ubpara link]$pwd
/home/ubpara/link
[ubpara link]$ln -sv /home/ubpara/link/a test/a
'test/a' -> '/home/ubpara/link/a'
[ubpara link]$ls -il test/
總用量 0
660116 lrwxrwxrwx 1 ubpara ubpara 19 5月 14 19:50 a -> /home/ubpara/link/a
[ubpara link]$ls -il .
總用量 8
660108 -rw-rw-r-- 1 ubpara ubpara 9 5月 14 19:41 a
660109 drwxrwxr-x 2 ubpara ubpara 4096 5月 14 19:50 test
[ubpara link]$
在test目錄下建立a的軟連結,其inode号不同,是因為其建立的"目錄項"中的内容是 “/home/ubpara/link/a”,權限為777
注:建立軟連結的時候,源檔案需要為絕對路徑,不然會以目前路徑(目标檔案所在的路徑)來找其連結的檔案,因為其目錄項存放相對路徑
進階
[ubpara link]$ls
a test
[ubpara link]$ls -il test/
總用量 0
660116 lrwxrwxrwx 1 ubpara ubpara 19 5月 14 19:50 a -> /home/ubpara/link/a
[ubpara link]$cat test/a
hello
[ubpara link]$rm a
[ubpara link]$ls -il test/
總用量 0
660116 lrwxrwxrwx 1 ubpara ubpara 19 5月 14 19:50 a -> /home/ubpara/link/a
[ubpara link]$cat test/a
cat: test/a: 沒有那個檔案或目錄
[ubpara link]$echo goodbye > a
[ubpara link]$ls -il test/
總用量 0
660116 lrwxrwxrwx 1 ubpara ubpara 19 5月 14 19:50 a -> /home/ubpara/link/a
[ubpara link]$cat test/a
goodbye
[ubpara link]$
若将a的原檔案删除,那麼a的連結就失效了,沒有那個檔案或目錄。當在原路徑中在建立一個新的檔案a,因為在test目錄下的a的"目錄項"儲存的路徑是"/home/ubpara/link/a" 不變,是以連結又能成功
總結
硬連結檔案有兩個限制
- 隻能對檔案建立,不能應用與目錄 避免循環引用
- 目錄硬連結的數是2
- 不能跨檔案系統,因為inode不同
- 建立硬連結會增加檔案被連結的次數
軟連結:
- 可應用與目錄
- 可以跨檔案系統
- 不會增加被連結檔案的連結次數
- 其大小為其執行的路徑所包含的字元個數