軟連接與硬鏈接區別

前言:

今天學習了文件系統,簡單的接觸到文件系統構成的原理。原來我們不管在linux和win上面刪除某個文件只是刪除一個鏈接而已。而linux把鏈接分為軟鏈接和硬鏈接。接下來我們就從文件系統構成的基本原理出發來說明下linux軟鏈接和硬鏈接的區別。

文件系統簡述:

linux的哲學就是一切皆文件。為了方便人們的使用,我們可以通過看文件名來區分不同的文件。但作為只識別0 1 的機器,讓它識別一串文字肯定復雜的多。所以linux文件系統用一串數字來標識一個文件,而且這個數字在文件所處的分區中是唯一存在的。這串數字就是inode號。那inode是什么? 文件主要有兩個部分數據構成,即元數據(metadata)和數據(data)。數據就是我們向往文件中保存的數據,元數據則是一些與文件內容本身無關,但為了管理文件或者操作文件所必要的一些信息。比如:文件的大小,文件的權限等等。我們把數據以文件系統規定的方式存儲在規定的地方(此內容在具體介紹文件系統時再深入了解),把元數據存儲在一個叫做inode的局域。全稱index node(索引節點)。inode也保存的元數據中包含了文件數據的位置。這也是系統能通過inode號找到文件的原因。

前文已經提到我們我們所能看到的文件名只是為了方便我們自己,而linux系統內部是不使用文件名,是使用inode號碼來識別文件的。我們把文件保存在目錄中。目錄文件的結構非常簡單,就是一系列項的列表。每個目錄項,由兩部分組成:所包含文件的文件名,以及該文件名對應的inode號碼。一定得明白目錄的本質。這樣才有利于明白后面目錄的讀,寫,執行權限。現在我們就可以好好說道說道,用戶通過文件名,打開文件到底發生了什么。實際上,系統內部這個過程分成三步,首先,系統通過目錄文件中的對應項,找到這個文件名對應的inode號碼;其次,通過inode號碼,獲取inode信息;最后,根據inode信息,找到文件數據在什么為位置,讀取數據。

硬鏈接:

雖然文件包含了元數據和數據。但是這個兩個數據并不是存儲在一起的。分別劃分兩個專門的區域,一個區域(inode)保存元數據,一個區域保存數據。若一個inode號對應多個文件名,則稱這些文件為硬鏈接。換言之,硬鏈接就是同一個文件使用了多個別名,即以不同的名字指向了同一個文件。因為inode號只在本分區中唯一,所以硬鏈接不能跨分區,而且硬鏈接不能指向一個目錄文件。元數據中還保存了文件的硬鏈接個數,當我們刪除一個硬鏈接時,文件的硬鏈接個數就減一,當硬鏈接個數為零時,這個文件所占有的空間就會釋放。文件釋放也僅僅是沒有了指向數據的鏈接。數據本身依然還存在于磁盤中。所以我們一般刪除文件的操作只是刪除一個指向文件的鏈接而已。

軟連接:

硬鏈接有自身的限制,比如;不能跨分區創建,不能對目錄創建。而軟鏈接則天生沒有這樣的問題,軟連接是一個單獨的文件有不同于被鏈接文件的inode號,而且軟連接指向的不是文件的數據,而只是指向文件名,它并不關心文件的內容是什么。所以軟連接會存在無效鏈接的情況,就是找不到被鏈接的文件。因為inode是占磁盤空間的,所以軟連接文件本身也是有文件大小的并且會占用一個inode號,inode號本身也是有限資源。

軟連接與硬鏈接區別

原創文章,作者:M21-陜西-李賢,如若轉載,請注明出處:http://www.www58058.com/52950

(1)
M21-陜西-李賢M21-陜西-李賢
上一篇 2016-10-31
下一篇 2016-10-31

相關推薦

  • 解決CentOS SSH 連接慢

    1、關閉DNS反向解析在linux中,默認就是開啟了SSH的反向DNS解析,這個會消耗大量時間,因此需要關閉。配置文件路徑 vim /etc/ssh/sshd_configUseDNS=no 在配置文件中,雖然UseDNS yes是被注釋的,但默認開關就是yes 2、關閉SERVER上的GSS認證在authentication gssapi-with-mic…

    Linux干貨 2018-01-10
  • CentOS6基礎網絡配置

    雖然也可以用命令進行臨時修改(ifconfig來設置IP,用route來配置網關,用hostname來配置主機名等等),但是重啟后會丟失。所以本文主要通過修改相關配置文件來實現: 配置dns、網關、ip地址 修改網卡名字 單網卡多IP配置 多網卡單IP配置 本次系統運行環境:  配置dns、網關、ip地址 首先,我們對網卡配置相關的主要的幾個文件簡…

    Linux干貨 2016-09-06
  • 硬盤分區及掛載

    標簽:文件系統、分區、掛載 一、Linux的基本原則    1、一切皆文件(包括硬件);這個原則會會在很多方面得到體現; 磁盤在Linux中也表現為文件,即/dev目錄下:IDE,ATA:/dev/hd[a-z]    SATA,SCSI,USB,SAS:sd[a-z]。    &nbsp…

    Linux干貨 2015-05-18
  • 模塊化的php編譯amp和fpm化的php編譯amp;

    編譯安裝amp 一,編譯環境前準備工作 (1) 系統環境:CentOS 6,7     CentOS 6:apr, apr-util的版本為1.3.9,不適用于httpd-2.4;     CentOS 7:apr, a…

    Linux干貨 2016-10-17
  • 馬哥教育網絡班20期+第3周課程練習

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。  who | cut -d' ' -f1 | sort -u 2、取出最后登錄到當前系統的用戶的相關信息。 last | head …

    Linux干貨 2016-06-26
  • 源碼包安裝Apache服務

    1、安裝development tools程序包組 安裝Apache服務器前需要解決依賴性問題,比如需要安裝GCC、GCC++、OPENSSL等等,因為是在虛擬機里做實驗,這里就通過直接安裝包組的方法解決依賴性問題。 (1)掛載安裝光盤,并安裝“Development tools”包組 [root@localhost ~]# mount&…

    Linux干貨 2016-08-24
欧美性久久久久