日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

簡介

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

 

Linux的硬鏈接和軟鏈接到底有什么區別?

 

 

目錄是什么?

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

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

硬鏈接和軟連接區別?

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

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

 

Linux的硬鏈接和軟鏈接到底有什么區別?

 

 

 

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

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

 

Linux的硬鏈接和軟鏈接到底有什么區別?

 

 

 

什么是硬鏈接?

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

命令:

link oldfile newfile 

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

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

 

 

Linux的硬鏈接和軟鏈接到底有什么區別?

 

 

例如:

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

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

什么是軟鏈接?

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

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

 

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

 

Linux的硬鏈接和軟鏈接到底有什么區別?

 

 

例如:

# ls -li 
 total 0 
 
 // 可對不存在的文件創建軟鏈接
 # ln -s test.file test_soft.link 
 # ls -liF 
 total 0 
 789467 lrwxrwxrwx 1 root root 8 Sep 1 18:00 test_soft.link -> test.file 
 
 // 由于被指向的文件不存在,此時的軟鏈接 test_soft.link 就是死鏈接
 # cat test_soft.link 
 cat: test_soft.link: No such file or directory 
 
 // 創建被指向的文件 test.file,test_soft.link 恢復成正常的軟鏈接
 # echo "This is an original file_A" >> test.file 
 # cat test_soft.link 
 This is an original file_A 
 
 // 對不存在的目錄創建軟鏈接
 # ln -s test.dir test_soft.link.dir 
 # mkdir -p test.dir/test 
 # tree . -F --inodes 
 . 
├── [ 789497] test.dir/ 
│ └── [ 789498] test/ 
├── [ 789495] test.file 
├── [ 789495] test_soft.link -> test.file 
└── [ 789497] test_soft.link.dir -> test.dir/

具體的解釋:略
 

分享到:
標簽:Linux
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定