成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

怎樣理解Linux的軟連接和硬鏈接?

系統 Linux
我們現代的操作系統需要防止程序崩潰導致信息丟失,需要將信息存儲在文件之中。而且文件能夠被多個進程同時讀取。在Linux中所以的資源,外設都抽象成了文件,所以就有了Linux中“一切皆文件”的特性。

 簡介

我們現代的操作系統需要防止程序崩潰導致信息丟失,需要將信息存儲在文件之中。而且文件能夠被多個進程同時讀取。在Linux中所以的資源,外設都抽象成了文件,所以就有了Linux中“一切皆文件”的特性。當然有文件,肯定是不夠的,總不能把所有的文件放在一起管理,實在是太亂,不易管理維護。Linux就引入了目錄的概念,在Windows中可以稱之為文件夾。目錄的引入就會讓Linux的根文件系統外觀上變成了一個層次分明的目錄樹。如下圖:

 

目錄是什么?

在Linux中“一切皆文件”,所以這個問題很好回答:目錄也是文件。目錄中記錄的是目錄下文件名。那既然是文件,如果在創建目錄的時候,與當前目錄下的文件或目錄重名,就肯定會創建失敗。

好了,既然搞清楚了目錄的概念,我們接著往下看。

硬鏈接和軟連接區別?

在Linux中表示一個文件的方式是通過兩個部分來分別表示的:用戶數據(user data)與元數據(meta data)。什么是用戶數據呢?用戶數據就是記錄真實文件內容的數據,這些數據是存放在一個個大小相等的文件數據塊中(data block)。

元數據呢?其實就是這個文件的附加信息屬性,例如:創建時間,文件大小等等這類信息。我們用索引號(inode)來表示每一個不同文件的元數據(當然inode也是元數據的一部分)。在Linux中,inode才是表示文件的***標識,而不是文件名。下圖展示了怎樣通過文件名來找到文件內容的。注意:元數據中并不包含文件名。文件名只是為了方便用戶識別和記憶罷了。

 

使用什么命令可以查看inode號?

可以使用stat和ls -i 命令查看,如下圖所示:

 

什么是硬鏈接?

硬鏈接是指通過索引節點來進行連接。也就是存在多個文件名指向同一個inode。這樣就可以將重要的文件建立硬鏈接,來防止“誤刪”的操作。

命令:

  1. link oldfile newfile  

可以創建硬鏈接。硬鏈接的inode是相同的,但是文件名不同,所以它有一些特性:

  1. 文件有相同的inode和data blocks;
  2. 不能對不存在的文件創建硬鏈接
  3. 不能跨文件系統創建(因為在各自文件系統下inode是***的,當跨文件系統就會出現inode重復的情況發生)
  4. 不能對目錄創建,只能對文件進行創建
  5. 如果刪除了一個硬鏈接文件,并不會影響其他的同inode文件(inode中存在鏈接計數器,刪除一個硬鏈接相當于計數器減一,反之加一。直到為0,刪除inode)

 

例如:

  1. # ls -li  
  2. total 0  
  3.   
  4. // 只能對已存在的文件創建硬連接 
  5. # link test.file test_hard.link  
  6. link: cannot create link `test_hard.link' to `test.file'No such file or directory  
  7.   
  8. # echo "This is an original file" > test.file  
  9. # cat test.file  
  10. This is an original file  
  11. # stat test.file  
  12.  File: `test.file' 
  13.  Size: 25           Blocks: 8          IO Block: 4096   regular file  
  14. Device: 807h/2055d      Inode: 660650      Links: 2  
  15. Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)  
  16. ...  
  17. // 文件有相同的 inode 號以及 data block  
  18. # link test.file test_hard.link | ls -li  
  19. total 8  
  20. 660650 -rw-r--r-- 2 root root 25 Sep  1 17:44 test_hard.link  
  21. 660650 -rw-r--r-- 2 root root 25 Sep  1 17:44 test.file  
  22.   
  23. // 不能交叉文件系統 
  24. # ln /dev/input/event5 /root/bfile.txt  
  25. ln: failed to create test_hard link `/root/bfile.txt' => `/dev/input/event5':  
  26. Invalid cross-device link  
  27.   
  28. // 不能對目錄進行創建硬連接 
  29. # mkdir -p test.dir/test  
  30. # ln test.dir/ test_hardlink.dir  
  31. ln: `test.dir/': test_hard link not allowed for directory  
  32. # ls -iF  
  33. 660650 test_hard.link  657948 test.dir/  660650 test.file 

具體的解釋可以參考硬鏈接的5點特性。

什么是軟鏈接?

軟連接就和硬鏈接完全不同,軟連接是用戶數據(data blocks)中記錄的是另一個文件的路徑名的指向。可以理解為軟連接其實就是一個普通的文件,只是他的內容非常的特殊。所以軟連接有他自己的inode號以及data blocks。那我總結下軟連接的特性:

  1. 軟連接有自己的文件屬性
  2. 可以對不存在的文件創建
  3. 軟鏈接可以跨文件系統
  4. 軟鏈接可以對目錄創建
  5. 軟鏈接創建不會造成鏈接計數器增加,因為就不是同一個inode
  6. 若鏈接的文件被刪除了,該鏈接就是沒有意義了,但是也可以重新創建。

下圖展示下軟鏈接的訪問過程:

 

例如:

  1. # ls -li  
  2.  total 0  
  3.   
  4.  // 可對不存在的文件創建軟鏈接 
  5.  # ln -s test.file test_soft.link  
  6.  # ls -liF  
  7.  total 0  
  8.  789467 lrwxrwxrwx 1 root root 8 Sep  1 18:00 test_soft.link -> test.file  
  9.   
  10.  // 由于被指向的文件不存在,此時的軟鏈接 test_soft.link 就是死鏈接 
  11.  # cat test_soft.link  
  12.  cat: test_soft.link: No such file or directory  
  13.   
  14.  // 創建被指向的文件 test.file,test_soft.link 恢復成正常的軟鏈接 
  15.  # echo "This is an original file_A" >> test.file  
  16.  # cat test_soft.link  
  17.  This is an original file_A  
  18.   
  19.  // 對不存在的目錄創建軟鏈接 
  20.  # ln -s test.dir test_soft.link.dir  
  21.  # mkdir -p test.dir/test  
  22.  # tree . -F --inodes  
  23.  .  
  24. ├── [ 789497]  test.dir/  
  25. │   └── [ 789498]  test/  
  26. ├── [ 789495]  test.file  
  27. ├── [ 789495]  test_soft.link -> test.file  
  28. └── [ 789497]  test_soft.link.dir -> test.dir/ 

具體的解釋:略

責任編輯:武曉燕 來源: 技術原理君
相關推薦

2018-11-09 10:30:05

Linux硬鏈接軟鏈接

2018-11-09 10:10:09

Linux硬鏈接軟鏈接

2017-01-15 15:27:51

Linux軟連接和硬鏈接

2020-06-01 19:00:42

Linux軟鏈接硬鏈接

2019-11-01 11:06:02

Linux操作系統Windows

2022-02-28 09:44:09

Linux硬鏈接軟鏈接

2023-11-15 08:27:46

Linux系統

2022-10-21 08:18:54

Linuxln 命令

2021-06-18 08:15:37

Linux軟鏈接硬鏈接

2019-04-12 14:26:17

Linux命令文件

2011-01-11 10:29:35

Linux文件

2010-05-04 13:09:21

Unix操作系統

2019-09-24 19:00:41

Linuxrm命令unlink命令

2019-12-10 09:53:27

LinuxCacheBuffer

2021-07-16 10:20:56

Linux 硬鏈接Linux 系統

2023-07-25 16:55:15

Linuxinode

2023-03-05 16:36:14

Linux鏈接目標文件

2010-07-09 10:13:42

UDP協議

2011-01-18 11:31:37

2017-06-26 10:22:22

Linux平均負載性能監控
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产高清在线视频 | 久久久一二三 | 在线观看亚洲精品 | 九九伦理电影 | 国产9久 | 免费国产一区二区视频 | 91精品久久久久 | 欧美一区二区三区四区在线 | 日日干干 | 古装人性做爰av网站 | 中文字幕日韩欧美 | 一二区成人影院电影网 | 在线视频一区二区 | 一二区视频 | 久久久久国产 | 色一情一乱一伦一区二区三区 | 久久免费福利 | 亚洲国产精品一区二区三区 | 日韩www| 野狼在线社区2017入口 | 国产精品久久久久久久久久 | 亚洲黄色一区二区三区 | 久久99精品久久久久久 | 日本一区二区不卡视频 | 欧美情趣视频 | 天天操天天拍 | 天堂一区二区三区 | 国产欧美精品一区 | 中文字幕在线视频免费视频 | 黄色网址免费在线观看 | jizz视频| 日韩在线视频一区 | 久久天堂 | 91久久综合亚洲鲁鲁五月天 | 国产清纯白嫩初高生视频在线观看 | 91视频大全 | 伊人久久综合 | 一区二区三区免费 | 国产精品视频一区二区三区 | 奇米超碰在线 | 91免费福利视频 |