【Linux】Linux系統硬連接和軟連接

   在linux系統中有種文件是連接文件,能夠爲解決文件的共享使用。連接的方式能夠分爲兩種,一種是硬連接(Hard Link),另外一種是軟連接或者也稱爲符號連接(Symbolic Link)。html

   查看linux系統中哪些是連接文件。node

l 爲符號連接

做者:12345678_0001
連接:https://www.imooc.com/article/26297
來源:慕課網

 上圖文件列表中第一列權限位標識第一個字符顯示的是文件類型,-爲通常文件,d爲目錄,而l顯示的就是連接文件。linux

此時每行顯示一個文件或者目錄的信息。第一個字母描述文件類型:- 爲通常文件,d 爲目錄,l 爲符號連接。

做者:12345678_0001
連接:https://www.imooc.com/article/26297
來源:慕課網
l 爲符號連接

做者:12345678_0001
連接:https://www.imooc.com/article/26297
來源:慕課網

 

硬連接windows


       硬連接是指經過索引節點來進行連接。在Linux的文件系統中,保存在磁盤分區中的文件不論是什麼類型都會給它分配一個編號,這個編號被稱爲索引節點編號號(Inode網絡

Index)或者Inode,它是文件或者目錄在一個文件系統中的惟一標識,文件的實際數據放置在數據區域(data block),它存儲着文件重要參數信息,也就是元數據 (metadata),好比建立時間、修改時間、文件大小、屬主、歸屬的用戶組、讀寫權限、數據所在block號等,以下圖所示。app

             圖片來源於網絡測試

      在Linux系統中,多個文件名指向同一索引節點(Inode)是正常且容許的。通常這種連接就稱爲硬連接。硬連接的做用之一是容許一個文件擁有多個有效路徑名,這樣用戶就能夠創建硬連接到重要的文件,以防止「誤刪」源數據(不少硬件,如netapp存儲中的快照功能就應用了這個原理,增長一個快照就多了一個硬連接》。不過硬連接只能在同一文件系統中的文件之間進行連接,不能對目錄進行建立。之因此文件創建了硬連接就會防止數據誤刪,是由於文件系統的原理是,只要文件的索引節點還有一個以上的連接(僅刪除了該文件的指向),只刪除其中一個連接並不影響索引節點自己和其餘的連接(數據的實體並未刪除),只有當最後一個連接被刪除後,此時若是有新數據要存儲到磁盤上,被刪除的文件的數據塊及目錄的連接纔會被釋放,空間被新數據暫用覆蓋。this

 

軟連接url


 

      軟連接(也叫符號連接),相似於windows系統中的快捷方式,與硬連接不一樣,軟連接就是一個普通文件,只是數據塊內容有點特殊,文件用戶數據塊中存放的內容是另外一文件的路徑名的指向,經過這個方式能夠快速定位到軟鏈接所指向的源文件實體。軟連接可對文件或目錄建立。spa

 

軟連接做用:

  • 便於文件的管理,好比把一個複雜路徑下的文件連接到一個簡單路徑下方便用戶訪問。
  • 節省空間解決空間不足問題,某個文件文件系統空間已經用完了,可是如今必須在該文件系統下建立一個新的目錄並存儲大量的文件,那麼能夠把另外一個剩餘空間較多的文件系統中的目錄連接到該文件系統中。

刪除軟連接並不影響被指向的文件,但若被指向的原文件被刪除,則相關軟鏈接就變成了死連接。

 

軟鏈接和硬連接的特色:

軟連接:

  • 1.軟連接是存放另外一個文件的路徑的形式存在。
  • 2.軟連接能夠 跨文件系統 ,硬連接不能夠。
  • 3.軟連接能夠對一個不存在的文件名進行連接,硬連接必需要有源文件。
  • 4.軟連接能夠對目錄進行連接。

硬連接:

  • 1. 硬連接,以文件副本的形式存在。但不佔用實際空間。
  • 2. 不容許給目錄建立硬連接。
  • 3. 硬連接只有在同一個文件系統中才能建立。
  • 4. 刪除其中一個硬連接文件並不影響其餘有相同 inode 號的文件。

 

不管是硬連接或軟連接都不會將本來的檔案複製一份,只會佔用很是少許的磁碟空間。

 

linux系統能夠用ln命令來建立連接文件。

ln命令格式: 

ln [參數] [源文件或目錄] [目標文件或目錄]

主要參數:

  • -i 交互模式,文件存在則提示用戶是否覆蓋。
  • -s 軟連接(符號連接)。
  • -d 容許超級用戶製做目錄的硬連接。
  • -b 刪除,覆蓋之前創建的連接
  1. 軟連接 (符號連接) ln -s   source  target 
  2. 硬連接 (實體連接)ln       source  target

案例:

給文件建立硬連接

[root@localhost tmp]# mkdir dirIn   建立測試目錄
[root@localhost tmp]# cd dirIn/
[root@localhost dirIn]# touch infile
[root@localhost dirIn]# ll
總用量 0
-rw-r--r-- 1 root root 0 5月  31 14:53 infile
[root@localhost dirIn]# ln infile infile_hard_file      在默認不帶參數狀況下,ln命令建立的是硬連接。
[root@localhost dirIn]# ll
總用量 0
-rw-r--r-- 2 root root 0 5月  31 14:53 infile
-rw-r--r-- 2 root root 0 5月  31 14:53 infile_hard_file

 

給文件建立軟連接

[root@localhost dirIn]# ln -s infile infile_soft_file    建立軟連接用s參數
[root@localhost dirIn]# ls -l
總用量 0
-rw-r--r-- 2 root root 0 5月  31 14:53 infile
-rw-r--r-- 2 root root 0 5月  31 14:53 infile_hard_file
lrwxrwxrwx 1 root root 6 5月  31 15:03 infile_soft_file -> infile  軟連接

 

咱們知道硬連接是有着相同 inode 號僅文件名不一樣的文件,用ls命令查看。
[root@localhost dirIn]# ls -li
1177358 -rw-r--r-- 2 root root 0 5月  31 14:53 infile
1177358 -rw-r--r-- 2 root root 0 5月  31 14:53 infile_hard_file
#上面源文件和硬連接文件inode號相同 (第一列就是inode號),指向同一個索引節點。
1177363 lrwxrwxrwx 1 root root 6 5月 31 15:03 infile_soft_file -> infile 軟連接是一個連接文件,文件模式那塊前面有個l字母,表示是個連接文件。
 

 硬連接不能指向目錄

[root@localhost dirIn]# ln dir infile     dir是個目錄
ln: "dir": 不容許將硬連接指向目錄

 

軟連接能夠
[root@localhost dirIn]# ll -i
  201884844 drwxr-xr-x 2 root root 19 5月  31 15:21 dir
  1177358 -rw-r--r-- 3 root root  0 5月  31 14:53 infile
  1177358 -rw-r--r-- 3 root root  0 5月  31 14:53 infile_hard_file
  1177363 lrwxrwxrwx 1 root root  6 5月  31 15:03 infile_soft_file -> infile
  1177365 lrwxrwxrwx 1 root root  3 5月  31 15:24 infile_soft_file_name -> dir

 刪除文件測試:

[root@localhost dirIn]# echo "this a file" > infile   向文件中添加數據
[root@localhost dirIn]# cat infile                    查看文件內容
this a file
[root@localhost dirIn]# cat infile_hard_file infile_soft_file           查看軟連接和硬連接文件內容一致
this a file
this a file
[root@localhost dirIn]# rm -f infile   刪除源文件
[root@localhost dirIn]# ls -lrti
  1177363 lrwxrwxrwx 1 root root  6 5月  31 15:03 infile_soft_file -> infile
201884844 drwxr-xr-x 2 root root 19 5月  31 15:21 dir
  1177365 lrwxrwxrwx 1 root root  3 5月  31 15:24 infile_soft_file_name -> dir
  1177358 -rw-r--r-- 2 root root 12 5月  31 15:27 infile_hard_file
[root@localhost dirIn]# cat infile_hard_file     硬連接文件存在 內容和源文件內容同樣。
緣由:雖然刪除源文件,可是任然有硬連接指向源文件inode
節點,因此不會被釋放刪除,

這裏只是刪除infile到inode節點的連接。
this a
file [root@localhost dirIn]# cat infile_soft_file 軟連接文件已經不存在了,目錄還會顯示這個文件,
就是軟連接文件已經失效。
cat: infile_soft_file: 沒有那個文件或目錄

 

刪除軟連接
[root@localhost dirIn]# rm -f infile_soft_file   直接刪除這個軟連接文件就行
[root@localhost dirIn]# ll
drwxr-xr-x 2 root root 19 5月  31 15:21 dir
-rw-r--r-- 2 root root 12 5月  31 15:27 infile_hard_file
lrwxrwxrwx 1 root root  3 5月  31 15:24 infile_soft_file_name -> dir
相關文章
相關標籤/搜索