国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

查看: 3127|回復: 0
打印 上一主題 下一主題

Linux文件系統的硬鏈接與軟鏈接

[復制鏈接]
跳轉到指定樓層
樓主
發表于 2017-12-6 10:51:18 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
關鍵詞: 嵌入式
Linux 系統中有軟鏈接和硬鏈接兩種特殊的文件
軟鏈接可以看作是Windows中的快捷方式,可以讓你快速鏈接到目標檔案或目錄。
硬鏈接則透過文件系統的inode來產生新檔名,而不是產生新檔案。
創建方法都很簡單:
1.
軟鏈接(符號鏈接) ln -s   source  target
2.
3.
硬鏈接 (實體鏈接)ln       source  target
4.
inode
要解釋清楚兩者的區別和聯系需要先說清楚 linux 文件系統中的 inode 這個東西。當劃分磁盤分區并格式化的時候,整個分區會被劃分為兩個部分,即inode區和data block(實際數據放置在數據區域中)這個inode即是(目錄、檔案)文件在一個文件系統中的唯一標識,需要訪問這個文件的時候必須先找到并讀取這個 文件的 inodeInode 里面存儲了文件的很多重要參數,其中唯一標識稱作 Inumber, 其他信息還有創建時間(ctime)、修改時間(mtime) 、文件大小、屬主、歸屬的用戶組、讀寫權限、數據所在block號等信息。
通常會根據分區的用途來安排inode的數量(這是另外一個話題了),比如文件數量很多而文件都很小,則需要調增inode較大,以便能索引全部文件。否則將會出現這個分區并沒有寫滿而無法寫入任何文件的情況。
目錄文件與檔案文件
目錄文件:記錄該目錄下的文件名
檔案文件:記錄實際文件數據
inode本身并不記錄文件名,文件名記錄在目錄文件的block當中,所以新增、刪除、更改文件名與目錄的W權限有關。因此當我們要讀某個檔案時,就務必經過其目錄inodeblock,然后才能夠找到待讀取檔案的inode號,最終才會讀到正確的檔案block內的數據。系統是通過索引節點(而不是文件名)來定位每一個文件。
目錄inode(滿足權限?) => 目錄block => 檔案inode(滿足權限?) => 檔案block
硬鏈接
file:///C:\Users\郭曉娟\AppData\Local\Temp\ksohtml\wpsBD0E.tmp.png多個檔名對應同一個inode,硬鏈接只是在某個目錄下新增一筆檔名鏈 接到某個inode號碼的關聯記錄而已。如果將上圖中任何一個檔名刪除,檔案的inodeblock都還存在,依然還可以通過另一個檔名來讀取正確的檔 案數據。此外,不論用哪一個檔名來編輯,最終的結果都會寫入相同的inodeblock中,因此均能進行數據的修改。
軟連接
file:///C:\Users\郭曉娟\AppData\Local\Temp\ksohtml\wpsBD1E.tmp.png
軟連接就是建立一個獨立的文件,而這個文件會讓數據的讀取指向它link的那個檔案的檔名,由于只是作為指向的動作,所以當來源檔案被刪除之后,軟連接的檔案無法開啟,因為找不到原始檔名。連結檔的內容只有檔名,根據檔名鏈接到正確的目錄進一步取得目標檔案的inode,最終就能夠讀取到正確的數據。如果目標檔案的原始檔名被刪除了那么整個環節就進行不下去了。
下面用一個實例來說明硬鏈接和軟鏈接。
現在目錄下有兩個文件,一個名為AAA,一個名為BBB
引用
$ ls -il
963922 -rw-r--r-- 1 ocean ocean 92 2007-05-18 15:46 AAA
963923 -rw-r--r-- 1 ocean ocean 95 2007-05-18 15:46 BBB

首先先做一個AAA的硬鏈接。
引用
$ ln AAA AAAhard
$ls -il
963922 -rw-r--r-- 2 ocean ocean 92 2007-05-18 15:46 AAA
963922 -rw-r--r-- 2 ocean ocean 92 2007-05-18 15:46 AAAhard
963923 -rw-r--r-- 1 ocean ocean 95 2007-05-18 15:46 BBB
這里我們注意在創建鏈接前,AAA顯示的鏈接數目為1,創建鏈接后
1.AAAAAAhard的鏈接數目都變為2
2.AAAAAAhardinode號是一樣的,都是963922
3.AAAAAAhard顯示的文件大小也是一樣,都是92B
可見進行了ln命令的操作結果:AAAAAAhard是同一個文件的兩個名字 它們具有同樣的索引節點號和文件屬性,建立文件AAA的硬鏈接,就是為 AAA的文件索引節點在當前目錄上建立一個新指針。嵌入式等系統學習加意義氣嗚嗚吧久林就易,你可以刪除其中任何一個,如rm AAA,每次只會刪除一個指針,鏈接數同時減一,只有將所有指向文件內容的指針,也即鏈接數減為0時,內核才會把文件內容從磁盤上刪除。
盡管硬鏈接節省空間,也是Linux系統整合文件系統的傳統方式,但是存在一些不足之處:
1.不允許給目錄創建硬鏈接。
2.不可以在不同文件系統的文件間建立鏈接。因為 inode 是這個文件在當前分區中的索引值,是相對于這個分區的,當然不能跨越文件系統了。
接著我們做一個指向BBB的軟鏈接,軟鏈接克服了硬鏈接的不足,沒有任何文件系統的限制,任何用戶可以創建指向目錄的符號鏈接。因而現在更為廣泛使用,它具有更大的靈活性,甚至可以跨越不同機器、不同網絡對文件進行鏈接。
引用
$ ln -s BBB BBBsoft
$ ls -il
總用量 0
963922 -rw-r--r-- 2 ocean ocean 92 2007-05-18 15:46 AAA
963922 -rw-r--r-- 2 ocean ocean 92 2007-05-18 15:46 AAAhard
963923 -rw-r--r-- 1 ocean ocean 95 2007-05-18 15:46 BBB
963924 lrwxrwxrwx 1 ocean ocean 3 2007-05-18 15:47 BBBsoft -> BBB
從上面鏈接后的結果可以看出來軟鏈接與硬鏈接,區別不僅僅是在概念上,在實現上也是完全不同的。
區別:
1.硬鏈接原文件/鏈接文件公用一個inode號,說明他們是同一個文件,而軟鏈接原文件/鏈接文件擁有不同的inode號,表明他們是兩個不同的文件;
2.在文件屬性上軟鏈接明確寫出了是鏈接文件,而硬鏈接沒有寫出來,因為在本質上硬鏈接文件和原文件是完全平等關系;
3.鏈接數目是不一樣的,軟鏈接的鏈接數目不會增加;
4.文件大小是不一樣的,硬鏈接文件顯示的大小是跟原文件是一樣的。而這里軟鏈接顯示的大小與原文件就不同了,BBB大小是95B,而BBBsoft3B因為BBB共有3個字符
5.軟鏈接沒有任何文件系統的限制,任何用戶可以創建指向目錄的符號鏈接
總之,建立軟鏈接就是建立了一個新文件。當訪問鏈接文件時,系統就會發現他是個鏈接文件,它讀取鏈接文件找到真正要訪問的文件。
當然軟鏈接也有硬鏈接沒有的缺點:因為鏈接文件包含有原文件的路徑信息,所以當原文件從一個目錄下移到其他目錄中,再訪問鏈接文件,系統就找不到了,而硬鏈接就沒有這個缺陷,你想怎么移就怎么移;還有它要系統分配額外的空間用于建立新的索引節點和保存原文件的路徑。

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 男女午夜特黄毛片免费 | 亚洲日本天堂 | h漫免费观看 | 国产精品成人一区二区1 | 手机天堂 | 亚洲免费色视频 | 国内自拍第五一页 | 国产福利麻豆精品一区 | 欧美成人精品大片免费流量 | 亚洲免费网站观看视频 | 狠狠插网站 | 操干网| 香蕉国产在线观看免费 | 国产色在线com | 免费不卡| 国产精品午夜国产小视频 | 日韩在线无 | 暖暖 免费 中国 高清 在线 | 91精品视品在线播放 | 一区二区三区欧美日韩国产 | 四虎国产精品免费久久久 | 欧美一区视频在线 | 四虎永久在线免费观看 | 久久99国产视频 | 亚洲日本欧美综合在线一 | 国产精品边做边接电话在线观看 | 日本高清免费在线视频 | 国产欧美日韩不卡 | www.五月天婷婷 | 9热在线精品视频观看 | 欧美日韩国产超高清免费看片 | 午夜欧美视频 | 色婷婷影院在线视频免费播放 | 最新日韩| 四虎永久精品免费观看 | 动漫av网站免费观看 | 99久久一香蕉国产线看观看 | 在线免费观看一级毛片 | 狼伊千合综网中文 | 插菊综合网| 亚洲二区在线视频 |