Linux中軟鏈接和硬鏈接的區別

Linux中軟鏈接和硬鏈接的區別

鏈接文件:

  Linux中包括兩種鏈接:硬鏈接(Hard Link)和軟鏈接(Soft Link),軟鏈接又稱為符號鏈接(Symbolic link)。

Inode

文件除了純數據本身之外,還必須包含有對這些純數據的管理信息

  • 文件名;

  • 訪問權限;

  • 文件的屬主以;

  • 該文件的數據所對應的磁盤數據塊;

  • 文件的時間戳; 

    • access time

    • modify time

    • chang time

  • 鏈接數,即有多少文件名指向這個inode;

這些管理信息稱之為元數據(mata data),保存在文件的inode節點之中。我們可以通過stat命令查看一個文件的inode信息:

命令格式: 
stat [OPTION]… FILE…

[root@wang ~]17:21# stat /root/wang
文件:"wang"
大?。?474         塊:8          IO 塊:4096   普通文件
設備:fd00h/64768d Inode:139145901   硬鏈接:3
權限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
環境:system_u:object_r:passwd_file_t:s0
最近訪問:2016-10-20 16:17:13.046000565 +0800
最近更改:2016-10-18 04:31:46.303621312 +0800
最近改動:2016-10-20 16:03:57.389348957 +0800

用stat查看文件的inode信息時,我們看到輸出的信息中有一行Inode:139145901,這個是/root/wang文件的inode號。每個inode都有一個全文件系統唯一的inode號,操作系統內核正是通過inode號而非文件名來識別不同的文件。文件名僅僅是為了方便用戶使用而已,內核是通過文件名找到inode,然后通過inode訪問實際文件數據的。既然系統是通過inode號找到的文件內容,那么是否可以存在多個文件的inode號是相同的情況呢?答案是有的就是開頭提到的硬鏈接。


硬鏈接文件其實就是與原文件在不同或者同一目錄(必須同分區)下的另外一個外號,與原文件指向同一個Inode,對應同樣的磁盤數據塊,具有相同的訪問權限、屬性等等。也就是說硬鏈接其實就是同一個人的別名或者是外號,不管叫什么其實都是指的同樣的人。

  • 命令格式: ln filename [ linkname ]

硬鏈接的優點;

  • 節省系統空間,一段磁盤數據塊不論有多少個硬鏈接都只占用一次空間;

  • 硬鏈接文件之間互相沒有關聯,當一個文件刪除時其他文件依然可以正常使用;

硬鏈接的缺點;

  • 不能跨分區創建硬鏈接。因為inode號只有在一個分區內才能保證是唯一的,跨越分期統則inode號就可能重復。

  • 不能對目錄創建硬鏈接。


軟鏈接又叫符號鏈接(symbolic link),與硬鏈接不同的是軟鏈接本身也是文件有自己獨立的Inode號,軟鏈接的文件內容是其所鏈接的另外一個文件或者目錄的路徑。當訪問軟鏈接時,會按照路徑找到軟鏈接所指向的實際目標文件。舉個例子 軟鏈接和Windows系統下的快捷方式十分類似。

命令格式:ln -s filename [linkname]

使用”ls -l ”令查看文件長格式時 第一位顯示為“l”的文件為軟鏈接文件。軟鏈接的文件內容就是引用文件的名稱。

        [root@wang ~]19:57# ll  /tmp/testdir/
       總用量 0
       drwxr-xr-x. 2 root root  6 10月 20 19:31 wang
       drwxr-xr-x. 2 root root  6 10月 20 15:30 zz
       lrwxrwxrwx. 1 root root 15 10月 20 15:31 zz.1nk -> /tmp/testdir/zz

軟鏈接的優點

  • 可以對目錄創建軟鏈接

  • 可以跨分區使用 
    軟鏈接的缺點

  • 鏈接文件的位置或者目標文件的位置發生改變時,軟鏈接可能會失效。


演示

創建一個指向 /tmp/testdir/test 的鏈接接文件 slink

[root@wang ~]20:18# mkdir /tmp/testdir
[root@wang ~]20:19# touch /tmp/testdir/test
[root@wang ~]20:19# ln -s /tmp/testdir/test /tmp/testdir/slink

使用ls -li /tmp/testdir/ 查看會發現新創建的軟鏈接文件slink的inode:4323463而原文件test的inode:4323457

1476968741372600.png

使用ln /tmp/testdir/test /tmp/testdir/hlink創建一個/tmp/testdir/test 的硬鏈接文件 hlink 
使用ls -li /tmp/testdir/查看會發現新創建的硬鏈接文件hlink和原文件test的inode相同都是4323457,屬主、屬組權限相同同時鏈接數變成了2 

Linux中軟鏈接和硬鏈接的區別

使用rm /tmp/testdir/test刪除原文件test后,再次使用ls -li /tmp/testdir/查看會發現軟連接slink已經失效,硬鏈接文件鏈接數減少了一個。

1476968741541677.png


                                             2016-10-20 20:54:36

原創文章,作者:M21-13-王振中,如若轉載,請注明出處:http://www.www58058.com/53258

(0)
M21-13-王振中M21-13-王振中
上一篇 2016-10-20
下一篇 2016-10-20

相關推薦

  • grep的用法

    grep的用法 1、復制/etc/skel目錄為/home/tuser1及其內容文件的屬組和其它用戶均沒有任何訪問權限。 cp -R /etc/skel /home/thuser1 #復制文件/etc/skel 到/home/目錄下并改名為thuser1 chmod -R 700 /home/thuser1 #更改/home/thuser1目錄權限為屬主全部…

    Linux干貨 2017-07-23
  • Linux之網絡管理

    Linux之網絡管理     在學習linux的過程中,Linux網絡的管理和配置中是很重要的,幾乎學習的后期都離不開網絡的概念和配置,如集群中的使用,學習好Linux網絡至關重要。     Linux網絡IP地址有兩種配置方式:靜態指定和動態分配 動態分配就是利用DHCP服務器,動態的給linux主機分配IP地址。靜…

    Linux干貨 2016-09-05
  • 3、文本處理命令、用戶與組命令練習

    1.列出當前系統上所有已登錄用戶的用戶名,同一個用戶登錄,則只顯示一次 [root@localhost ~]# who root     tty1         2016-08-23 06…

    Linux干貨 2016-09-19
  • 書寫博客的作用

    博客,一個對于我們是一個既貼近又遙遠的詞匯。在我們生活中常常聽到這個詞匯,但是很大的一部分人并不會去發布屬于自己的博客。而我在這里會發表一些對于博客作用的認識,以供大家借鑒。

    2018-03-26
  • iptables, sudo N28

    2018/2/25 17:14 第十二周

    2018-02-25
  • vfork 掛掉的一個問題

    在知乎上,有個人問了這樣的一個問題——為什么vfork的子進程里用return,整個程序會掛掉,而且exit()不會?并給出了如下的代碼,下面的代碼一運行就掛掉了,但如果把子進程的return改成exit(0)就沒事。 我受邀后本來不想回答這個問題的,因為這個問題明顯就是RTFM的事,后來,發現這個問題放在那里好長時間,而掛在下面的幾個答案又跑偏得比較嚴重,…

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