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

来源:https://www.cnblogs.com/fengdejiyixx/archive/2019/05/06/10821820.html
-Advertisement-
Play Games

概念: 硬鏈接(hard link): A是B的硬鏈接(A和B都是文件名),則A的目錄項中的inode節點號與B的目錄項中的inode節點號相同,即一個inode節點對應兩個不同的文件名,兩個文件名指向同一個文件,A和B對文件系統來說是完全平等的。如果刪除了其中一個,對另外一個沒有影響。每增加一個文 ...


概念:

硬鏈接(hard link):

    A是B的硬鏈接(A和B都是文件名),則A的目錄項中的inode節點號與B的目錄項中的inode節點號相同,即一個inode節點對應兩個不同的文件名,兩個文件名指向同一個文件,A和B對文件系統來說是完全平等的。如果刪除了其中一個,對另外一個沒有影響。每增加一個文件名,inode節點上的鏈接數增加一,每刪除一個對應的文件名,inode節點上的鏈接數減一,直到為0,inode節點和對應的數據塊被回收。註:文件和文件名是不同的東西,rm A刪除的只是A這個文件名,而A對應的數據塊(文件)只有在inode節點鏈接數減少為0的時候才會被系統回收。

軟鏈接(soft link):

    A是B的軟鏈接(A和B都是文件名),A的目錄項中的inode節點號與B的目錄項中的inode節點號不相同,A和B指向的是兩個不同的inode,繼而指向兩塊不同的數據塊。但是A的數據塊中存放的只是B的路徑名(可以根據這個找到B的目錄項)。A和B之間是“主從”關係,如果B被刪除了,A仍然存在(因為兩個是不同的文件),但指向的是一個無效的鏈接。

主要區別、限制:

硬鏈接:

  a.不能對目錄創建硬鏈接,原因有幾種,最重要的是:文件系統不能存在鏈接環(目錄創建時的".."除外,這個系統可以識別出來),存在環的後果會導致例如文件遍歷等操作的混亂(du,pwd等命令的運作原理就是基於文件硬鏈接,順便一提,ls -l結果的第二列也是文件的硬鏈接數,即inode節點的鏈接數)

  b:不能對不同的文件系統創建硬鏈接,即兩個文件名要在相同的文件系統下。

  c:不能對不存在的文件創建硬鏈接,由原理即可知原因。

軟鏈接:

  a.可以對目錄創建軟鏈接,遍歷操作會忽略目錄的軟鏈接。

  b:可以跨文件系統

  c:可以對不存在的文件創建軟鏈接,因為放的只是一個字元串,至於這個字元串是不是對於一個實際的文件,就是另外一回事了

ln 語法格式 

硬鏈接:ln 源文件 鏈接名   

軟鏈接:ln -s 源文件 鏈接名

 註意:  鏈接的源文件路徑要寫絕對路徑)

 否則會報錯(no such file or diretory)

示例:

 

 

 

 如果覺得不錯的話可以點贊關註哦!  謝謝


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • OSharpNS全稱OSharp Framework with .NetStandard2.0,是一個基於`.NetStandard2.0`開發的一個`.NetCore`快速開發框架。這個框架使用最新穩定版的`.NetCore SDK`(當前是.NET Core 2.2),對 AspNetCore... ...
  • 三,mmap通信 創建記憶體映射區。 函數mmap:打開一個文件,指定一個文件的區域,作為一個區域,映射到記憶體中,以後就直接操作那個記憶體,就能夠實現進程間的通信。因為是記憶體操作,所以速度最快。 addr:固定NULL length:拿出文件中的多長的一段,映射到記憶體。 offset:從文件內容中的哪個 ...
  • 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 03 ...
  • 第一章:科普和Linux系統安裝 第1節:操作系統介紹OS:Operating System,通用目的的軟體程式硬體驅動進程管理記憶體管理網路管理安全管理文件管理OS分類:伺服器OS:RHEL,CentOS,Windows,Server,AI桌面OS:Windows10,Windows7,Mac OS ...
  • Java+Tomcat 環境部署 下麵在Centos7進行安裝Java+Tomcat,網上的很多文章,我在部署中都有些問題,下麵是我自己總結的一個安裝過程! 安裝Java環境 首先,我們先到Java官網下載JDK 這裡我下載jdk1.8版本的 https://www.oracle.com/techn ...
  • 2019年好好乾 ...
  • @ "TOC" 創建一個.c文件 對於圖形化的linux,需要右鍵桌面,在終端中打開,輸入 vi 文件名.c 就創建了一個.c文件,並且在vim模式下進行編輯。 如果用不慣vim也可以在創建了.c文件之後直接雙擊打開在gedit下編輯,就像window系統下的txt編輯一樣。 寫完代碼以後進行編譯 ...
  • 對於每一個Linux學習者來說,瞭解Linux文件系統的目錄結構,是學好Linux的至關重要的一步.,深入瞭解linux文件目錄結構的標準和每個目錄的詳細功能,對於我們用好linux系統只管重要,下麵我們就開始瞭解一下linux目錄結構的相關知識。 當在使用Linux的時候,如果您通過ls –l / ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...