linux系統 硬鏈接和軟鏈接

背景:

當幾個用戶同在一個項目里工作時。經常須要共享文件。

假設一個共享文件同一時候出如今屬于不同用戶的不同文件夾下。工作起來就非常方便。

比如B和C文件夾下有一文件D是兩者都能夠訪問和改動的共享文件,這樣是非常方便,但也會有一些問題,假設文件夾中包括磁盤地址,則當連接文件時。必須把C文件夾中的磁盤地址拷貝到B文件夾中,假設B或C隨后又往該文件里加入內容,則新的數據塊將僅僅列入進行加入工作的用戶的文件夾中。

其它的用戶對此改變是不知道的。違背了共享的目的。

兩種方法解決這樣的問題。

方法一:硬鏈接(實體連接或實際連接)

透過文件系統的inode 連結來產生新檔名。而不是產生新檔案!這樣的又稱 為實體鏈接 (hardlink).

· 每一個檔案都會占用一個inode ,檔案內容由 inode的記錄來指向;

· 想要讀取該檔案。必項要經過文件夾記錄的文件名稱來指向到正確的inode 號碼才干讀取。??? 也就是說,事實上文件名稱僅僅與文件夾有關,可是檔案內容則與 inode 有關。那舉想一想, 有沒有可能有多個檔名相應到同一個 inode 號碼呢?有的!那就是 hard link 的由來。

所以簡單的說:hard link 僅僅是在某個文件夾下新增一筆檔名鏈接到某 inode 號碼的關連記彔而已。
[

舉個樣例來說。如果我系統有個 /root/crontab 他是 /etc/crontab 的實體鏈接,也就是說這兩個檔名 連結到同一個 inode ,自然這兩個文件名稱的全部相關信息都會一模一樣(除了文件名稱之外)。實際的情況能夠例如以下所看到的:


你能夠發現兩個檔名都連結到 1912701 這個 inode 號碼。所以您瞧瞧。是否檔案的權限/屬性全然一 樣呢? 由于這兩個『檔名』事實上是一模一樣的『檔案』啦!并且你也會發現第二個字段由原本的 1 發 成 2 了。 那個字段稱為『連結』。這個字段的意義為:『 有多少個檔名鏈接到這個 inode 號碼』的意思。

假設將讀取到正確數據的方式畫成示意圖。就類似例如以下畫面:


你能夠透過 1 或 2 的文件夾的 inode 指定的block 找到兩個不同的檔名,而無論使用哪 個檔名均能夠指到 real 那個 inode 去讀取到終于數據!那這樣有優點呢?最大的優點就是『安 全』!

如同上圖中, 假設你將不論什么一個『檔名』刪除,事實上 inode 與 block 都還是存在的!

此時你能夠透過還有一個『檔名』來讀取到正確的檔案數據喔!此外,不論你使用哪個『檔名』來編輯,終于的結果都會寫入到同樣的 inode 與block 中。因此均能進行數據的改動。攻克了上述的問題,一般來說,使用 hard link 設定鏈接文件時,磁盤的空間與 inode 的數目都不會改發。我們還是由圖 2.2.1 來看,由圖中能夠知道。 hard link 僅僅是在某個文件夾下的 block 多寫入一個關連數據而已。既不會添加 inode 也不會耗用 block 數量。

Tips:

簡單來講:硬鏈接就是同一文件使用了多個別名(有共同的inode),是不同的文件指向同樣的inode。達到文件共享的目的;

長處:安全,改動同步。刪除一個硬鏈接文件并不影響其它有同樣inode號的文件;

缺點:不能跨 Filesystem,不能 link 文件夾。

不能跨Filesystem:由圖 2.2.1 其實我們也可以知道,其實 hard link 應該僅能在單一文件系統中進行的。應該是不可以跨文件系統才對!

由于圖 2.2.1 就是在同一個 filesystem 上嘛!所以 hard link 是有限制的。

不能link文件夾:由于假設使用 hard link 鏈接到目彔時, 鏈接癿數據須要連同被鏈接目彔底下的全部數據都建立鏈接,舉例來說,假設你要將 /etc 使用實體鏈接建立一個 /etc_hd 的目彔時。那舉在 /etc_hd 底下的全部檔名同一時候都與/etc 底下的檔名要建立 hard link 的。而不是僅連結到 /etc_hd 與/etc 而已。

而且,未來假設須要在 /etc_hd 底下簡歷新檔案時,連帶的/etc底下的數據又得要建立一次hard link,因此造成環境相當大的復雜度。所以不能link文件夾。

hard link?的制作中,事實上還是可能會改發系統的block。那就是當你新增這筆數
據卻剛好將文件夾的block 填滿時。就可能會新加一個block 來記錄文件名稱關連性。
而尋致磁盤空間的變化。只是。一般 hard link 所用掉的關連數據量非常小。所以通常
不會改發 inode 與磁盤空間的大小喔

方法二:軟鏈接(符號連接即快捷方式)

相對于hard link , Symbolic link 可就好理解多了,基本上, Symbolic link 就是在建立一個獨立的檔案,而這個檔案會讓數據 的讀取指向他link的那個檔案的檔名。由與僅僅是利用檔案來做為指向的動作, 所以。當來源檔被刪除之后。symboliclink 的檔案會『開不了』 , 會一直說『無法開啟某檔案!』。實際上就是找不到原始『檔名』而已啦!

舉例來說,我們先建立一個符號鏈接文件鏈接到 /etc/crontab 去看看:


我們能夠知道兩個檔案指向不同的iode 號碼,當然就是兩個獨立的檔案存在! 并且連結檔的重要內容就是他會寫上目標檔案的『文件名稱』 , 你能夠發現為什么上表中連結檔的大小為 12 bytes 呢? 由于箭頭(-->)右邊的檔名『 /etc/crontab』總共同擁有 12 個英文。每一個英文占用 1 個 byes , 所以檔案大小就是12bytes 了。 關于上述的說明,我們以例如以下圖示來解釋:


由 1 號 inode 讀取到連結檔的內容僅有檔名,依據檔名鏈接到正確的目彔去取得目標檔案的inode , 終于就能夠讀取到正確的數據了。你能夠發現的是。假設目標檔案(/etc/crontab)被刪除了,那整個環節就會無法繼續進行下去。所以就會產生無法透過連結檔讀取的問題了! 這里還是得特別留意,這個 Symbolic Link 與 Windows 的快捷方式能夠給他劃上等號,由 Symbolic link 所建立的檔案為一個獨立的新的檔案。所以會占用掉 inode 與 block 喔! 由上面的說明來看。似乎 hard link 比較安全。由于即使某一個目彔下的關連數據被殺掉了, 也沒有關系,僅僅要有不論什么一個目彔下存在著關連數據,那舉該檔案就不會不見!舉上面的樣例來說,我的 /etc/crontab 與 /root/crontab 指向同一個檔案,假設我刪除了 /etc/crontab 這個檔案,該刪除的動作事實上僅僅是將 /etc 目彔下關于crontab 的關連數據拿掉而已, crontab 所在的 inode 與 block 事實上都沒有變動。

軟鏈接:文件用戶數據中有效的內容是還有一文件的路徑名的指向。是一普通文件,數據塊有點特殊。刪除軟鏈接不影響源文件。

長處:方便,能夠用到文件夾。

僅僅要簡單地提供一個機器的網絡地址以及文件在該機器上駐留的路徑。就能夠連接全球不論什么地方機器上的文件。

缺點:須要額外的開銷。必須讀取包括路徑的文件,然后要一個部分一個部分的掃描路徑,直到找到inode節點,也須要額外的磁盤存取。刪除源文件,鏈接文件為死文件。

由于硬鏈接應用受到限制。軟鏈接應用較為廣泛。



轉載于:https://www.cnblogs.com/yutingliuyl/p/7049841.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/258362.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258362.shtml
英文地址,請注明出處:http://en.pswp.cn/news/258362.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

jquery純數字驗證

$(document).ready(function(){ //純數字驗證,只讓輸入數字,比如-號等都不然輸入。 $(#user-defined).unbind(); $(#user-defined).bind(keyup change,function () { $(this).val($(this).val().replace(/\D/g,));}); });轉載于:https://www.cnblogs.com/kuiyeit/p/47940…

閃電模型數學_最經典的數學模型

最經典的數學模型怎樣得到最好的女孩子的數學模型【關鍵詞】怎樣得到最好女孩子數學模型由于老天爺在你的生命中安排的異性并不是同時出現任你挑選,因此無論你在何時選擇結婚都是有機會成本的。人們常常希望能夠獲得一個最可愛的人作為自己的伴侶。但是,…

最近提交一個mysql5.7的bug,提醒自己以后注意寫SQL要規范

最近幫朋友提交一個mysql5.7的bug , oracle mysql 的大神還回復我 , 以后注意書寫sql規范 , 潛臺詞是不是不要給他們增加工作量 https://bugs.mysql.com/bug.php?id86610轉載于:https://www.cnblogs.com/kelvin19840813/p/7052983.html

openssl 學習之從證書中提取RSA公鑰N 和 E

原文鏈接: http://blog.csdn.net/kkxgx/article/details/19850509 通常數字證書包含很多信息,其中N和E值即我們稱為的公鑰。如何從PEM 或者DER格式的證書中提出證書呢?下面給出代碼實現從PEM和DER編碼的證書中提出N、E。 [cpp] view plaincopy #include …

獲得漢字字符個數

//獲得漢字字符個數function ChineseWordsCount(text:string):Integer;var i,sum,e,c,t: Integer;begin Result:0; c : 0; sum : Length(text); if Sum0 then exit; for i : 0 to sum do begin if Ord(text[i]) > 127 then begin Inc(c); end; end;…

2020湖南省技能競賽獲獎名單_2020年湖南省職業院校技能競賽學院獲獎情況通報...

由湖南省教育廳、湖南省人力資源和社會保障廳、湖南省農業農村廳等30個單位聯合舉辦的2020年湖南省職業院校技能競賽于2019年12月28日已經圓滿結束所有競賽項目,我院選派了190名選手參加了園林景觀設計與施工、雞新城疫抗體水平測定、集成電路開發及應用、農機維修、…

Web browser的發展演變

我們每天都在使用著瀏覽器,每個人使用的瀏覽器各不一樣。在這個科技飛速發展的時代,一個游覽器能否站住腳跟取決于使用者的數量,看用戶是否喜歡這個產品,聽取用戶們的意見來改善。 我們這個年齡的人最初用到的瀏覽器肯定是IE瀏覽器…

nodejs簡單層級結構配置文件

在NodeJS中使用配置文件,有幾種比較不錯的方案:第一種:文件格式使用json是毋容置疑的好方案。格式標準,易于理解,文件內容讀取到內存之后,使用JSON的標準分析函數即可得到配置項。第二種:將配置…

C++語言基礎(1)-命名空間

一個中大型軟件往往由多名程序員共同開發,會使用大量的變量和函數,當有兩個人都同時定義了一個名字相同的全局變量或函數的時候,若是把他們的代碼整合在一塊編譯,此時編譯器就會提示變量或函數重復定義,C為了解決這個問…

matlab 散點圖 線性回歸圖_線性回歸思路梳理

作者:夏雨驕陽 封面:自己想吧1簡單線性回歸1根據研究目的確定因變量和自變量。2判斷有無異常值。通過繪制散點圖直觀觀察;亦可通過線性回歸的【統計】→【個案診斷】→【所有個案】進行分析,若標準殘差超過[-3,3],則…

物聯網云端設計分析

物聯網是世界信息產業發展的新浪潮,智能手表、智能手環、智能燈等物聯網產品不斷的改變著人們的生活方式。那這些產品是怎么設計出來的呢?其實物聯網操作系統不光由本地物聯網設備上的操作系統組成,還包括提供物聯網終端設備支持的云端架構。…

PHP使用文件流下載文件方法(附:解決下載文件內容亂碼問題)

記得高中時候做過游戲私服,那時候的游戲主頁是用PHP寫的,因為文件很固定,客戶端,登陸器和一些小工具,文件數目也不是很多,所以都是直接把下載鏈接寫死的,直接鏈接到本地服務器的文件目錄&#x…

Redis和Memcached的區別

2019獨角獸企業重金招聘Python工程師標準>>> Redis的作者Salvatore Sanfilippo曾經對這兩種基于內存的數據存儲系統進行過比較: Redis支持服務器端的數據操作:Redis相比Memcached來說,擁有更多的數據結構和并支持更豐富的數據操作…

hbase hmaster一會就沒了_淺析HBase

一、HBase簡介1、Apache HBase?是Hadoop數據庫,是一個分布式,可擴展的大數據存儲。2、當您需要對大數據進行隨機,實時讀/寫訪問時,請使用Apache HBase?。 該項目的目標是托管非常大的表( 數十億的行*百萬的列 &#…

【Android工具】DES終結者加密時報——AES加密演算法

轉載請注明出處:http://blog.csdn.net/zhaokaiqiang1992在前面的兩篇文章中。我們介紹了DES算法,3DES算法以及他們的Android程序實現,并研究了怎樣才干實現不同平臺下加密算法的一致性。只是話說起來,DES算法是在1976年被美國的國…

MATLAB 迭代法解方程

MATLAB 迭代法解方程 1、代碼如下: %%牛頓迭代法解方程 function xnewton_interation(fun,dfun,x0,EPS) %簡單牛頓迭代法%fun即迭代函數,dfun即迭代函數的一階導數,x0為迭代初值,EPS為精度x1x0-fun(x0)/dfun(x0); %牛頓迭代公…

【12期 3月期刊 自薦】

12期的小伙伴看過來~因為網易博客的網絡問題。我們把負責收集自薦的博客寫到了CSDN里,希望大家在此篇博客的評論里,積極自薦自己的博客。 為了提高大家的積極性,我們評選優秀博客的方法升級為大家自薦博客,博客委員會當月負責人進…

超微服務器電源短接啟動圖解_教你一招,讓你的電腦啟動速度秒殺別人

win10快速啟動其實是電腦的一種休眠模式,它將電腦中的一些本該關閉的文件保存到hiberfil.sys的磁盤文件中,這樣打開電腦時就達到了快速開機的目的。接下來,我就將win10設置快速啟動的方法分享給你們win10系統功能非常強大,最讓大家…

MATLAB 求離散信號卷積

MATLAB 求離散信號卷積 代碼如下: function [C,Ck] dt_convolution_advance(A,B,Ak,Bk) % dt_convolution_advance 計算離散信號卷積 % A 輸入信號 % B 輸入信號 % Ak 輸入信號A下標 % Bk 輸入信號B下標 % C 輸出信號 % Ck 輸出信號C下標 % 計算輸入信號A&…

Oracle data type number

Oracle numberNUMBER [ (p [, s]) ]Number having precision p and scale s. Theprecision p can range from 1 to 38. The scale s can range from -84 to 127. Bothprecision and scale are in decimal digits. A NUMBER value requires from 1 to 22bytes.scale是可選的。SQ…