中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux中軟連接和硬鏈接是什么意思

發布時間:2021-10-26 17:00:19 來源:億速云 閱讀:232 作者:小新 欄目:系統運維

這篇文章主要為大家展示了“Linux中軟連接和硬鏈接是什么意思”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Linux中軟連接和硬鏈接是什么意思”這篇文章吧。

 簡介

我們現代的操作系統需要防止程序崩潰導致信息丟失,需要將信息存儲在文件之中。而且文件能夠被多個進程同時讀取。在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. 鴻蒙官方戰略合作共建——HarmonyOS技術社區

  2. 文件有相同的inode和data blocks;

  3. 不能對不存在的文件創建硬鏈接

  4. 不能跨文件系統創建(因為在各自文件系統下inode是***的,當跨文件系統就會出現inode重復的情況發生)

  5. 不能對目錄創建,只能對文件進行創建

  6. 如果刪除了一個硬鏈接文件,并不會影響其他的同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. 鴻蒙官方戰略合作共建——HarmonyOS技術社區

  2. 軟連接有自己的文件屬性

  3. 可以對不存在的文件創建

  4. 軟鏈接可以跨文件系統

  5. 軟鏈接可以對目錄創建

  6. 軟鏈接創建不會造成鏈接計數器增加,因為就不是同一個inode

  7. 若鏈接的文件被刪除了,該鏈接就是沒有意義了,但是也可以重新創建。

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

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中軟連接和硬鏈接是什么意思”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沙坪坝区| 全椒县| 马关县| 永济市| 阿城市| 永福县| 崇礼县| 潢川县| 荆门市| 两当县| 自治县| 会同县| 冷水江市| 景宁| 顺义区| 佳木斯市| 兴国县| 开封县| 息烽县| 尚义县| 潞城市| 阳泉市| 盖州市| 安吉县| 和林格尔县| 天柱县| 古蔺县| 突泉县| 囊谦县| 东莞市| 冀州市| 台江县| 惠来县| 吐鲁番市| 罗甸县| 宜兰县| 徐闻县| 图木舒克市| 沂南县| 巫溪县| 永仁县|