硬鏈接和軟鏈接的區別

硬鏈接和軟鏈接的區別

1、概念

在linux中,鏈接可分為兩種:一種為硬鏈接,另一種為軟鏈接。
硬鏈接:ln 源文件 目標文件
軟鏈接:ln -s(soft)源文件 目標文件

硬鏈接

硬鏈接是指通過索引節點inode來進行鏈接。
linux系統中每個文件對應一個inode,并且允許多個文件名指向用一個inode。這種情況的文件就成為硬鏈接。
它的作用之一就是允許一個文件擁有多個入口,防止重要數據誤刪。

硬鏈接的原理:

硬鏈接和軟鏈接的區別

軟鏈接

軟鏈接也稱為符號鏈接,相當于windows中的快捷方式。文件類型為L,是一個特殊的文件。文件中包含了另一個文件的路徑信息內容。

軟鏈接的原理:

硬鏈接和軟鏈接的區別

2、實驗

實驗1:首先創建一個magedufile,可以看到硬鏈接數為1,通過ln創建一個硬鏈接magedufile_link,再次通過ls -li,可以發現數字變成2,兩個文件第一列inode數量都為33612019。cat硬鏈接內容與源文件一樣。把源文件刪除后,link文件依然還在,內容沒丟失,鏈接數變為1。ln不能對目錄創建硬鏈接。

[root@centos7 magedu]#ls -l
-rw-r–r–. 1 root root 17 Jul 23 13:38 magedufile
[root@centos7 magedu]#cat magedufile 
i am study linux
[root@centos7 magedu]#ln magedufile magedufile_link
[root@centos7 magedu]#ls -li
total 8
33612019 -rw-r–r–. 2 root root 17 Jul 23 13:38 magedufile
33612019 -rw-r–r–. 2 root root 17 Jul 23 13:38 magedufile_link
[root@centos7 magedu]#cat magedufile_link 
i am study linux
[root@centos7 magedu]#rm -f magedufile
[root@centos7 magedu]#ls
magedufile_link
[root@centos7 magedu]#cat magedufile_link 
i am study linux
[root@centos7 magedu]#ls -li
total 4
33612019 -rw-r–r–. 1 root root 17 Jul 23 13:38 magedufile_link
[root@centos7 ~]#ln Desktop Desktop.bak
ln: ‘Desktop’: hard link not allowed for directory

總結: 
    (1)具有相同inode節點號的多個文件是為互為硬鏈接文件
    (2)刪除硬鏈接文件或者源文件,文件本身并未被刪除
    (3)刪除文件的所有硬鏈接和源文件,文件才真正被刪除
    (4)硬鏈接文件是文件的另一個入口
    (5)硬鏈接文件可以用rm命令刪除

實驗2:創建一個文件,通過ln -s創建軟鏈接后查看發現inode不同,軟鏈接后面跟一個->指向源文件,當刪除源文件后,軟鏈接指向發生錯誤。

[root@centos7 app]#echo “i am study linux” >/app/magedudir
[root@centos7 app]#ls -l
total 4
-rw-r–r–. 1 root root 17 Jul 23 15:01 magedudir
[root@centos7 app]#ln -s magedudir magedudir_slink
[root@centos7 app]#ls -li 
total 4
67 -rw-r–r–. 1 root root 17 Jul 23 15:01 magedudir
68 lrwxrwxrwx. 1 root root  9 Jul 23 15:03 magedudir_slink -> magedudir
硬鏈接和軟鏈接的區別

總結:
(1)快捷方式,可以通過readlink查看指向
(2)是一個文本文件。里面存放的是源文件的路徑,指向源文件
(3)刪除源文件,軟鏈接依然存在,但是無法正常指向源文件
(4)失效的時候紅底閃爍提示
(5)軟鏈接和源文件是不同類型的文件,也是不同的文件。inode不相同。
(6)刪除軟鏈接文件可以用rm命令

3、區別

(1)創建方式的不同。默認不帶參數的情況下,ln創建的是硬鏈接,帶-s參數創建的是軟鏈接
(2)硬鏈接文件與源文件的inode相同,而軟鏈接文件的inode與源文件不同
(3)ln不能對目錄創建硬鏈接,但可以創建軟鏈接。
(4)刪除文件的軟鏈接文件,對源文件及硬鏈接文件無任何影響
(5)刪除文件的硬鏈接文件,對源文件及軟鏈接文件無任何影響
(6)刪除鏈接文件的源文件,對硬鏈接文件無影響,會導致軟鏈接失效
(7)同時刪除源文件及其硬鏈接,整個文件才會被刪除
(8)軟鏈接可以跨文件系統,硬鏈接不可以跨文件系統

4、附加

文件的刪除原理

文件的刪除由兩個變量控制:
                     i_link  文件的硬鏈接數量
                     i_count 引用計數(有一個程序調用就+1)
文件刪除的條件:
                     i_link=0 && i_count=0

原創文章,作者:eleven,如若轉載,請注明出處:http://www.www58058.com/82407

(0)
eleveneleven
上一篇 2017-07-23
下一篇 2017-07-23

相關推薦

  • DNS以及bind使用

    DNS以及域名分發布式數據庫相關知識      一、 DNS相關介紹           1. DNS(Domain Name Service):域名解析服務協議         &nbsp…

    2015-03-17
  • 部署LAMP之WordPress, PMA(https), Discuz

    一、環境介紹     系統:CentOS 6.7     軟件:httpd-2.2, mysql-5.3, wordpress-4.3, pma4.0     網絡:       …

    Linux干貨 2016-03-24
  • 磁盤管理和文件系統

    磁盤結構 設備文件:關聯至一個設備驅動程序,進而能夠跟與之對應硬件設備進行通信 一切皆文件:open(), read(), write(), close() 設備類型: 塊設備:block,存取單位“塊”,磁盤 字符設備:char,存取單位“字符”,鍵盤 設備號碼: 主設備號:major number, 標識設備類型 次設備號:minor number, 標…

    Linux干貨 2017-04-23
  • MySQL入門命令知識

    簡單介紹下吧,MySQL應用的場景大多數互聯網公司第一次賣身是賣個了sun好像是10億,第二次是連同sun自己,以74億美元被賣給了Orecle~后面MySQL原作者站出來說,MySQL會存在閉源風險,整了個MariaDB~我也是醉了,也不考慮下我們的痛苦!下面簡要介紹下MySQL的入門知識。    一、MySQL有三種定義語言 &nbs…

    2016-12-05
  • 馬哥教育網絡班22期+第6周課程練習

    請詳細總結vim編輯器的使用并完成以下練習題 vim: 模式化的編輯器 基本模式:     編輯模式:命令模式     輸入模式:     未行模式:內置的命令行接口 打開文件:      …

    Linux干貨 2016-09-26
  • linux之/home目錄轉移分區。

    linux之/home目錄轉移分區。     I,基本思路,將/home目錄的數據轉移到新的分區,再將/home目錄掛載到新的分區。     II,添加硬盤,進行分區,添加新硬盤不重啟機器識別命令echo “- – -”  /sys/class/scsi_host/host#/scan,然后進行 …

    Linux干貨 2017-06-19
欧美性久久久久