軟連接與硬鏈接區別

前言:

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

文件系統簡述:

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

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

硬鏈接:

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

軟連接:

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

軟連接與硬鏈接區別

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

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

相關推薦

  • N26第五周博客作業

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行;grep “^[[:space:]]+” /boot/grub/grub.conf 2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,而后又有至少一個非空白字符的行;grep “^#[[:space:…

    Linux干貨 2017-03-06
  • ftp的用戶權限配置

    文件服務: 應用層:ftp; 內核級網絡文件系統:nfs POSIX(可移植操作系統接口 Portable Operating System Interface of UNIX,縮寫為 POSIX ) API(應用程序編程接口) 跨平臺的網絡文件系統:cifs (samba)   網絡存儲: NAS:NetworkAttached Stoage,文…

    Linux干貨 2017-05-02
  • DNS實驗

    正向解析 編輯/etc/named.conf listen-on port 53 { 172.0.0.1; 192.168.209.134; }; //listen-on-v6 port 53 { ::1; }; allow-query { any; }; dnssec-enable no; dnssec-validation no; 編輯/etc/name…

    Linux干貨 2017-05-31
  • 馬哥教育網絡21期+第十周練習博客

    馬哥教育網絡21期+第十周練習博客 1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情) CentOS啟動流程:1,加電自檢->Boot Sequence–>加載內核文件 BOOT Sequence中包含了MBR和GRUB     MBR:記錄磁盤扇區,共512字…

    Linux干貨 2016-09-19
  • 初學Linux文件目錄結構

    /:根目錄 /bin(binary):放置的是二進制文件??蓤绦械拿?;非管理類的命令,通常是系統啟動就需要的文件,供所有用戶使用的基本命令;不能關聯至獨立分區, OS啟動即會用到的程序。 /sbin:管理類的命令,通常只有管理員可以使用。 /lib:存放的是系統級別的庫文件 /lib64:專用于x86_64系統上的輔助共享庫文件存放位置  /ro…

    Linux干貨 2017-07-13
  • 網絡中多網卡和多ip中的高可用

    一、虛擬網卡實現一個網卡多個地址 1、單個網卡實現多個ipv4地址,只需要在該網卡的配置文件的目錄新增網卡配置文件即可。進入網卡"eth0"的目錄下 2、新增網卡配置文件"ifcfg-eth0:0"和"ifcfg-eth0:1" 3、關掉NetworkManager服務 4、重啟網卡,讓系統重讀配置…

    Linux干貨 2016-09-10
欧美性久久久久