天天看點

[linux檔案系統]軟連結和硬連結前言總結

前言

插播一下檔案的軟硬連結,其實也與檔案系統相關。了解了硬連結和軟連結也能夠更好的了解檔案系統

硬連結,符号連結

  • 硬連結:不同的目錄條目中指向相同的資料塊内容
  • 符号連結:其目錄條目中,存放的是另一個路徑的檔案名,檔案大小為存放路徑字元個數,權限都為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" 不變,是以連結又能成功

總結

硬連結檔案有兩個限制

  1. 隻能對檔案建立,不能應用與目錄 避免循環引用
  2. 目錄硬連結的數是2
  3. 不能跨檔案系統,因為inode不同
  4. 建立硬連結會增加檔案被連結的次數

軟連結:

  1. 可應用與目錄
  2. 可以跨檔案系統
  3. 不會增加被連結檔案的連結次數
  4. 其大小為其執行的路徑所包含的字元個數