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. 其大小爲其執行的路徑所包含的字符個數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章