Linux軟連接和硬鏈接詳解

一、軟鏈接和硬鏈接的概念

在Linux文件系統中,鏈接是一種文件系統中的指向另一個文件或目錄的引用。軟鏈接(Symbolic Link或者叫做Symlink)和硬鏈接(Hard Link)是Linux中兩種不同的鏈接類型。

軟鏈接,也稱為符號鏈接,它是一種特殊的文件,它包含有另一文件或目錄的路徑信息。軟鏈接以「ln -s」命令建立,軟鏈接可以創建指向目錄或文件的鏈接,軟鏈接也可以創建指向不存在的文件或目錄的鏈接。

硬鏈接是將一個文件存在的目錄項指向同一個索引節點,也就是說,硬鏈接是指多個文件句柄指向同一個文件數據塊。硬鏈接可以理解為對同一文件的多個名字,通過「ln」命令建立。

二、軟鏈接和硬鏈接的區別

軟鏈接和硬鏈接的不同點1:文件類型

軟鏈接和硬鏈接的文件類型不同。軟鏈接是一個單獨的文件,它的文件類型是「偽文件」,文件大小只有原文件的幾個位元組;而硬鏈接並不單獨佔用空間,它是一個與原文件完全相同的文件,文件類型是「普通文件」,也就是說,在硬鏈接創建之後,無論是原文件還是硬鏈接之間做的改動都會同時反映出來。

軟鏈接和硬鏈接的不同點2:路徑解析

軟鏈接和硬鏈接在解析路徑時的方式不同,硬鏈接通過文件的i節點來解析,軟鏈接通過文件路徑名來解析。

$ ls -li file1
2582235 -rw-r--r--. 2 user1 user1 6 Jul  9 11:31 file1
$ ln file1 file2
$ ln -s file1 file3
$ ls -li file{1,2,3}
2582235 -rw-r--r--. 3 user1 user1 6 Jul  9 11:31 file1
2582235 -rw-r--r--. 3 user1 user1 6 Jul  9 11:31 file2
2582236 lrwxrwxrwx. 1 user1 user1 5 Jul  9 11:32 file3 -> file1

從上述的代碼可知,file2是硬鏈接,file3是軟鏈接。在創建硬鏈接時,新增的硬鏈接文件file2,實際只是在文件系統中新增了一個目錄項,但是所有的目錄項都是與原文件file1關聯的。而軟鏈接則是在文件系統中新增了一個「偽文件」,這個「偽文件」指向了原文件file1。

軟鏈接和硬鏈接的不同點3:符號鏈接的作用範圍

因為軟鏈接是通過文件路徑名來解析的,所以軟鏈接對文件名的長度沒有限制,可以跨越文件系統,解析任意路徑上的文件;而硬鏈接只能建立在同一個文件系統中。

三、軟鏈接和硬鏈接的示例

下面我們來演示一下軟鏈接和硬鏈接的使用方法。

建立軟鏈接

使用「ln -s」命令來建立軟鏈接,例如:

$ touch file1 file2
$ ln -s file1 file3
$ ls -li file{1,2,3}
8197166 -rw-r--r-- 1 user1 user1 0 Jul  9 13:15 file1
8197167 -rw-r--r-- 1 user1 user1 0 Jul  9 13:15 file2
8197851 lrwxrwxrwx 1 user1 user1 5 Jul  9 13:15 file3 -> file1

從上面的例子中可知:建立軟鏈接時,file3指向的是file1的路徑。

建立硬鏈接

使用「ln」命令來建立硬鏈接,例如:

$ ln file1 file4
$ ls -li file{1,2,3,4}
8197166 -rw-r--r-- 2 user1 user1 0 Jul  9 13:15 file1
8197167 -rw-r--r-- 1 user1 user1 0 Jul  9 13:15 file2
8197851 lrwxrwxrwx 1 user1 user1 5 Jul  9 13:15 file3 -> file1
8197852 -rw-r--r-- 2 user1 user1 0 Jul  9 13:20 file4

從上面的例子中可知:因為file4是對file1的硬鏈接,所以修改其中任意一個文件都會同時反映出來;而且,通過「ls -li」命令也可以看出來,硬鏈接的索引節點編號是相同的。

刪除軟鏈接和硬鏈接

刪除軟鏈接和硬鏈接僅僅是刪除鏈接本身,而不是文件本身。

$ rm file3
$ rm file4

四、鏈接的使用場景

軟鏈接和硬鏈接在Linux系統中的應用非常廣泛,尤其是在文件共享、備份、存檔等方面有很好的效果。

軟鏈接可以方便地在文件間共享數據,並且不會造成不必要的文件複製。同時,在升級更新時,只需要改變軟鏈接的指向即可實現文件的更新。

硬鏈接通常用於類Unix系統的軟體管理中。例如,當我們安裝一個新軟體時,新軟體的所有文件都很可能會放在「/usr/local/bin」等目錄下,在軟體管理中,如果創建軟鏈接,那麼當我們卸載軟體後仍然會有一些殘留文件存在,造成垃圾文件的出現。而使用硬鏈接,這些文件都指向同一個索引節點,如果某個硬鏈接被刪除,只要文件本身還被其他硬鏈接文件佔用,那麼實際上該文件並不會被刪除。

總結

軟鏈接和硬鏈接是Linux系統中非常常用的兩種鏈接方式,通過本文的介紹,我們可以知道軟鏈接和硬鏈接的不同點,並且知道了軟鏈接和硬鏈接的使用方法。

原創文章,作者:LTKD,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/144140.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
LTKD的頭像LTKD
上一篇 2024-10-24 15:27
下一篇 2024-10-24 15:27

相關推薦

  • Avue中如何按照後端返回的鏈接顯示圖片

    Avue是一款基於Vue.js、Element-ui等技術棧的可視化開發框架,能夠輕鬆搭建前端頁面。在開發中,我們使用到的圖片通常都是存儲在後端伺服器上的,那麼如何使用Avue來展…

    編程 2025-04-28
  • LwIP短鏈接client常式用法介紹

    本文將詳細闡述LwIP短鏈接client常式,該常式是基於LwIP協議棧實現的一個短鏈接客戶端程序,適用於嵌入式設備上進行互聯網通信。 一、LwIP介紹 LwIP(Lightwei…

    編程 2025-04-28
  • 如何創建短鏈接和實現熱切換

    在本文中,我們將會介紹如何使用Python創建短鏈接和實現熱切換功能。 一、創建短鏈接 1、什麼是短鏈接?通俗易懂來說,短鏈接就是將長鏈接變成一個短小精悍的地址,通常是為了方便用戶…

    編程 2025-04-28
  • 如何在Linux中添加用戶並修改配置文件

    本文將從多個方面詳細介紹在Linux系統下如何添加新用戶並修改配置文件 一、添加新用戶 在Linux系統下創建新用戶非常簡單,只需使用adduser命令即可。使用以下命令添加新用戶…

    編程 2025-04-27
  • 源程序只有經過編譯和鏈接後才能成為可執行程序

    源程序只有經過編譯和鏈接後才能成為可執行程序,這是編程開發中極為重要的一個環節。下面從編譯、鏈接以及可執行程序的生成過程三個方面來詳細闡述。 一、編譯 編譯是將源碼轉化為機器代碼的…

    編程 2025-04-27
  • 如何解決linux jar包 invalid or corrupt jarfile問題

    對於許多開發人員和系統管理員在Linux環境下使用Java開發過程中遇到的一個常見的問題是 invalid or corrupt jarfile(無效或損壞的jar文件)錯誤。當您…

    編程 2025-04-27
  • Python中提取子鏈接Python頭歌

    本文將從多個方面詳細闡述Python中提取子鏈接Python頭歌的方法和技巧。 一、正則表達式方法 使用Python的正則表達式模塊可以方便地提取子鏈接Python頭歌。以下是一個…

    編程 2025-04-27
  • 在Linux上安裝JRE並配置環境變數

    本文將從以下幾個方面為您詳細闡述如何在Linux系統上,通過自己賬戶安裝JRE,並且配置環境變數。 一、安裝JRE 在進行安裝前,我們需要下載JRE的安裝包並解壓,可以從官方網站下…

    編程 2025-04-27
  • GTKAM:Linux下的照片管理器

    GTKAM是用於Linux操作系統的一款照片管理器,它支持多種相機及存儲設備,並提供了一系列強大的工具,讓用戶可以方便地瀏覽、管理、編輯和導出照片。本文將從多個方面對GTKAM進行…

    編程 2025-04-27
  • 神經網路代碼詳解

    神經網路作為一種人工智慧技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網路的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網路模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25

發表回復

登錄後才能評論