windows中的軟鏈接硬鏈接等


學校嘛,有些時候還是得逆逆上網客戶端啥的,並且學校的不少工作,這Windows的需求還是挺強的,之前Win10的體驗並不是太好,不過時隔這么久,打算從7升級到10了,恰好系統也該換了。

首先是命令行的關注,在家里使用了太久的marjaro,逐漸轉為開發,以前對windows的命令行不關注也變為關注了,PowerShell安裝了scoop,可以一鍵安裝不少工具了,但是有一個痛點就是,以前對用戶目錄不關注,但是linux用久了反而覺得用戶目錄好用挖,我想在在命令行下切到我快捷方式指向的目錄,但是是不行的,然后了解了一下這方面,就像是linux下的軟鏈接硬鏈接一樣。

使用PowerShell

軟鏈接

New-Item -ItemType SymbolicLink -Path C:\\image -Target C:\\source.txt

硬鏈接

New-Item -ItemType HardLink -Path C:\\image.txt -Target C:\\source.txt

Junction

windows中文件與文件夾是完全不同的兩種類型,創建文件夾鏈接不可以使用 HardLink ,但是可以使用 Junction

New-Item -ItemType Junction -Path C:\\test\_image -Target C:\\test\_source

雖然powershell可以建立,但是命令還是很繁瑣,cmd下有個工具mklink

使用CMD

cmd下有個好用的工具mklink

C:\\>mklink

創建符號鏈接。
MKLINK \[\[/D\] | \[/H\] |\[/J\]\] Link Target
    /D 創建目錄符號鏈接。默認為文件符號鏈接。
    /H 創建硬鏈接而非符號鏈接。
    /J 創建目錄鏈接。
    Link 指定新的符號鏈接名稱。
    Target 指定新鏈接引用的路徑(絕對或相對)。

軟鏈接和硬鏈接的區別

其實這部分和linux中的是差不多的

符號(軟)鏈接(Symbolic link)

  • 執行命令 mklink link_name target_name
  • 創建鏈接后的圖標和快捷方式很像
  • 在系統中不占用空間
  • 在文件系統中不是一個單獨的文件
  • 在操作系統層解析(!?)
  • 如果源文件被刪除了,鏈接就沒用了
  • 移除源文件不會影響符號鏈接
  • 移除鏈接文件也不會影響源文件

硬鏈接(Hard link)

  • 執行命令 mklink /H link_name target_name
  • 在系統中占用的空間與源文件相同,但在系統中引用的是相同的對象(不是拷貝)
  • 在操作系統層解析(!?)
  • 圖標和創建快捷方式的圖標不同
  • 移除源文件不會影響硬鏈接
  • 移除硬鏈接不會影響源文件
  • 如果源文件被刪除,它的內容依然通過硬鏈接存在
  • 硬鏈接文件的任何更改都會影響到源文件

快捷方式有何不同

首先不說快捷方式占空間, 軟鏈接不占空間,還有我覺得很重要的區別是快捷方式帶后綴.lnk,是個文件,無法通過路徑重定向到目標地址,反正我不太推薦這個,除非是建立到桌面方便鼠標點擊的用戶。

軟鏈接和Junction的區別

可能你會疑惑 mklink 命令參數 /D/J 的區別。這里我直接貼一段我查到的東西:

  1. 創建

    • /d 可以使用相對路徑方式創建
    • /j 必須絕對路徑方式創建
      此區別意義不大,建議所有的mklink目錄均用絕對路徑創建
  2. 復制和剪切

    • 復制:/d /j 均生成源目錄的內容副本,變為一般文件夾
    • 剪切/移動:
      • /d 生成的目錄,移動到其他地方,仍舊保持鏈接,對源目錄無影響,/d生成的目錄消失。
      • /j 生成的目錄,移動到其他地方,會產生一個新的副本文件夾,源文件夾內容全部移至新普通文件夾內,源文件夾清空,源文件夾仍舊存在,/j生成的目錄也依舊存在
  3. 軟件打開 用 filedialog 打開,/d生成的目錄,地址欄會跳到源目錄位置。 /J 生成的目錄,地址欄不會跳到源目錄位置。 用 FolderDialog 打開,兩者相同。

整體來說,/D 更像一個快捷方式。

符號鏈接(Symlink,Softlink)是對文件或目錄的引用,實際上符號鏈接本身是一個“記錄着所引用文件或目錄的絕對或相對路徑”的特殊文件,通過符號鏈接的操作都會被重定向到目標文件或目錄。

交接點(Junction),也稱為“再分析點”,是 NTFS 3.0 及以上文件系統(Windows 2000 及以上系統)的特性,它是鏈接本地目錄(可跨卷)的訪問點,通過交接點的操作都會被系統映射到實際的目錄上。通過建立交接點,可以在保證一個目錄實例(目錄的一致性)的前提下,允許用戶或程序從本地文件系統中的多個位置訪問此目錄。

對符號鏈接和快捷方式的“讀、寫、遍歷”等操作都會被重定向到目標文件或目錄;但對它們的“復制、刪除、移動、配置 ACL”等操作只針對自身;符號鏈接不但可以應用於本地系統,還可以應用 UNC 路徑。

對交接點內文件和子目錄的“建立、刪除、修改”等操作都被映射到對應的目錄中的文件和子目錄上;
對交接點的“復制、粘貼、剪切、配置 ACL”,只會影響此交接點;
在同一卷內移動交接點,只會影響此交接點;但在不同卷間移動交接點,會將此交接點轉換為正常目錄,並且交接點對應目錄下的所有內容都會被移動;
通過“資源瀏覽器(Explorer.exe)”和“命令行 del”等工具刪除交接點時,會同時刪除對應目錄下的所有內容(但不會刪除目錄);可通過“linkd.exe /d”安全的刪除交接點;但在 vista 及以后的系統中,對交接點的刪除會被正確的處理。

你可以自己建立這兩個后,在同卷和在不同卷間復制移動粘貼看看區別,就暫時我了解到的來說的話,我個人建議是使用/D


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM