Linux的軟鏈接和硬鏈接區別

在Linux中,為了方便文件的使用,引入了兩種鏈接,即為軟鏈接和硬鏈接。

那么什么是硬鏈接,什么又是軟鏈接呢。

簡單來說,硬鏈接就是一個inode號對應多個文件名,也就是說一個文件使用了多個別名。

首先先來看看我們要創建硬連接的文件信息:

[root@localhost ~]# ll -i /root             //查看原文件的屬性信息
201386466 -rw-r–r–  1 root root   46 Oct 20 19:18 testlink

接下來我們來針對testlink文件來創建硬連接文件:

[root@localhost ~]# ln testlink testlink1    //創建名為testlink1的硬鏈接文件
[root@localhost ~]# ll -i                        //比較兩個文件的信息
201386466 -rw-r–r–  2 root root   46 Oct 20 19:18 testlink
201386466 -rw-r–r–  2 root root   46 Oct 20 19:18 testlink1

 從上面可以看出,硬鏈接數的地方變成了2,其他無論是權限、時間戳、大小,甚至inode號都相同,我們在把硬鏈接文件刪除看看:

[root@localhost ~]# rm -rf testlink     //刪除硬鏈接文件
[root@localhost ~]# ll -i               //查看原文件信息
201386466 -rw-r–r–  1 root root   46 Oct 20 19:18 testlink

硬鏈接數有變成了1!可見刪除鏈接文件后鏈接數遞減;

剛才我們只針對文件創建了硬鏈接文件,接下來我們對目錄創建個硬鏈接試試看。

[root@localhost ~]# ll -i              //查看testlink目錄的屬性信息
67111809 drwxr-xr-x  2 root root    6 Oct 20 20:05 testlink     
[root@localhost ~]# ln testlink testlink1       //對比兩個文件的信息
ln: ‘testlink’: hard link not allowed for directory    //報錯了?。?!

由上述可見:

硬鏈接文件實際就是對原數據起的一個別名,它們具有相同的inode即date block;

創建的硬鏈接會增加其鏈接數;

刪除硬鏈接后鏈接數相應減少,但文件的其他信息不影響;

硬鏈接只針對文件,對目錄無法創建硬鏈接。

接下來說說軟鏈接:

軟鏈接又稱符號鏈接,不同于硬鏈接的創建方法,軟鏈接創建是需加-s選項,接下來我們試著創建一個軟鏈接:

[root@localhost tmp]# ll -id /root/testlink/     //查看原目錄信息

可見,軟鏈接可對目錄創建,對testlink目錄創建軟鏈接前后,自身的屬性信息比沒有變化,而創建后的軟鏈接文件無論是inode號、權限、時間戳,還是大小均改變,類似于win下的快捷方式

[root@localhost ~]# rm -rf /root/testlink     //刪除原鏈接目錄  
[root@localhost ~]# ll -i /tmp/testlink2
24206 lrwxrwxrwx 1 root root 17 Oct 13 16:27 /tmp/testlink2 -> ../root/testlink/    //鏈接文件報錯

由此軟鏈接不能不能刪除原鏈接,否則由于映射不到原文件而報錯,此類似于win中得快捷方式

由上

軟鏈接不僅對文件可創建軟鏈接,對目錄同樣有效

刪除原始文件后,軟鏈接失效(類似win下快捷方式)

軟鏈接的編號為自己的編號,與原文件無關

此外,在日常生產中,盡量以相對路徑的方式來創建軟鏈接,這樣在整個目錄拷貝時,不會因為絕對路徑的改變而對程序產生影響。


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

(0)
maomaosan2008maomaosan2008
上一篇 2016-10-20 21:28
下一篇 2016-10-20 22:05

相關推薦

  • 救援SOS

    CentOS卸載內核后用救援模式恢復 1、卸載內核                              2、重啟虛擬機后機器起不來,所以reboot重新啟動立馬按住ESC鍵,選擇光盤引導 3、選擇第三項&…

    Linux干貨 2016-09-19
  • Linux的獲取系統的幫助信息及man文檔說明

    Linux的獲取系統的幫助信息及man文檔說明 幫助命令有內部命令幫助和外部命令幫助兩種 內部命令獲得幫助使用下面命令 # help COMMAND 例如: [root@localhost ~]# type type type is a shell builtin [root@localhost ~]# help type type: type [-afpt…

    2018-02-28
  • date命令總結

    在linux中man手冊頁,對date -d 參數的的說明比較模糊,一下的舉例,進一步說明: #-d –date=STRING display time described by STRING not 'now' 命令: date -d nex-day +%Y%m%d    //明天日期 d…

    Linux干貨 2016-08-05
  • rsync+inotify實時同步備份數據

    rsync同步 rsync+inotify實時同步備份數據 軟件簡介: rsync命令簡介: rsync命令是一個遠程數據同步工具,可通過LAN/WAN快速同步多臺主機間的文件。rsync使用所謂的“rsync算法”來使本地和遠程兩個主機之間的文件達到同步,這個算法只傳送兩個文件的不同部分,而不是每次都整份傳送,因此速度相當快。 rsync是一個功能非常強大…

    Linux干貨 2016-10-28
  • Linux基礎命令

    Linux基礎命令 大家都知道Linux是由許許多多的小程序組成的,而這些小程序是怎么啟動的呢?在Linux中這些小程序大多是靠命令來啟動運行的 命令(COMMAND):請求內核將某個二進制程序運行為一個進程的過程就是命令 程序由命令運行之后就會形成一個有生命周期的‘進程’,一個靜態的二進制程序運行為一個動態的進程是由命令發起的. 在Linux中命令可分為兩…

    Linux干貨 2016-11-02
  • Keepalives+lvs實現高可用httpd的雙主模型

    基礎環境:Centos 7.3 最小化安裝四臺 關閉防火墻及selinux 簡單原理: keepalived是以VRRP協議為實現基礎的,VRRP全稱VirtualRouter Redundancy Protocol,即虛擬路由冗余協議。 虛擬路由冗余協議,可以認為是實現路由器高可用的協議,即將N臺提供相同功能的路由器組成一個路由器組,這個組里面有一個mas…

    2017-05-15
欧美性久久久久