【Windows】硬鏈接和軟鏈接(OneDrive同步指定目錄?)

文章目錄

  • 一、場景帶入
  • 二、Windows下的硬鏈接和軟鏈接
    • 2.1 硬鏈接(Hard Link)
    • 2.2 軟鏈接(符號鏈接,Symbolic Link)
    • 2.3 軟鏈接和快捷方式
    • 2.4 應用場景
  • 三、OneDrive中的應用
    • 3.1 錯誤姿勢
    • 3.2 好像可行的嘗試
    • 3.3 合理的解決方案

一、場景帶入

OneDrive是一個非常好用的產品,但當你使用它進行自動備份時,會發現他只支持對幾個特定的目錄進行備份:

在這里插入圖片描述
這時就想到了Linux下常見的概念“鏈接”,而Windows也支持鏈接功能。

【Linux】硬鏈接 和 軟鏈接。

二、Windows下的硬鏈接和軟鏈接

更加詳細的概念,可以看前面的鏈接,以前寫的文章,Linux下的鏈接。

2.1 硬鏈接(Hard Link)

硬鏈接是指向同一文件內容的多個目錄項,使得在不同位置的多個文件名指向同一個文件數據塊。硬鏈接與源文件之間沒有主從關系,它們是完全對等的。

特點:

  • 共享數據:硬鏈接指向相同的文件數據塊,因此修改任意一個硬鏈接會影響所有指向該數據塊的硬鏈接。
  • 不可區分:硬鏈接之間沒有區別,所有鏈接都是平等的,沒有“主”或“次”之分。
  • 刪除影響:刪除一個硬鏈接不會刪除文件數據,只有當所有指向該文件數據的硬鏈接都被刪除后,文件數據才會被刪除。
  • 限制硬鏈接只能在同一卷(partition或者說一個分區、一個不是一類文件系統)上創建,不能跨卷創建。

創建方法:

在 Windows 中,可以使用命令行工具 mklink 創建硬鏈接。命令格式如下:

mklink /H <硬鏈接路徑> <目標文件路徑>

例如,創建一個名為 hardlink.txt 的硬鏈接,指向 original.txt

mklink /H C:\example\hardlink.txt C:\example\original.txt

mklink用法(這是cmd命令,power shell不能直接用):
MKLINK [[/D] | [/H] | [/J]] Link Target

    /D      創建目錄符號鏈接(軟件)。默認(無參數時)為文件符號鏈接。/H      創建硬鏈接。/J      創建目錄聯接(軟鏈接,不能跨區)。Link    指定新的符號鏈接名稱。Target  指定新鏈接引用的路徑(相對或絕對)。

/J和/D都可以創建軟鏈接,/J的兼容性和透明性很好,但是它不能跨區。硬鏈接只能用于文件,不能用于目錄。

2.2 軟鏈接(符號鏈接,Symbolic Link)

軟鏈接(符號鏈接)是指向另一個文件或目錄的引用,它們包含目標文件或目錄的路徑,而不是實際的數據。軟鏈接類似于快捷方式。

特點:

  • 指向目標:軟鏈接指向文件系統中的另一個文件或目錄,包含目標文件或目錄的路徑。
  • 獨立性:軟鏈接是獨立的文件,可以位于與目標文件或目錄不同的位置。
  • 靈活性:可以創建指向任何位置的軟鏈接,無論是本地文件系統還是遠程文件系統。
  • 方便更新:如果目標文件或目錄發生變化,軟鏈接無需修改,只需確保其指向的路徑正確。

創建方法:

在 Windows 中,可以使用命令行工具 mklink 創建軟鏈接。命令格式如下:

mklink [/D] <軟鏈接路徑> <目標路徑>

其中,/D 參數用于創建指向目錄的軟鏈接。如果省略 /D 參數,則創建指向文件的軟鏈接

例如,創建一個名為 symlink.txt 的軟鏈接,指向 original.txt

mklink C:\example\symlink.txt C:\example\original.txt

創建一個名為 symlinkDir 的軟鏈接,指向 originalDir 目錄:

mklink /D C:\example\symlinkDir C:\example\originalDir

2.3 軟鏈接和快捷方式

Windows 的快捷方式(Shortcut)與軟鏈接(Symbolic Link)類似,但它們在實現和用途上有所不同。以下是兩者的詳細比較:

(1)Windows 快捷方式

  • 特性

    1. 文件類型:快捷方式是一個特殊的文件,通常具有 .lnk 擴展名。
    2. 內容:快捷方式文件包含目標文件或目錄的路徑,以及圖標、工作目錄、描述等其他信息。
    3. 創建工具:可以通過文件資源管理器的右鍵菜單創建,也可以使用腳本或編程方式創建。
    4. 功能:主要用于創建桌面或菜單中的快捷訪問路徑,用戶雙擊快捷方式時,會打開其指向的目標文件或目錄。
  • 示例
    在文件資源管理器中,右鍵點擊文件或目錄,選擇“發送到”->“桌面快捷方式”即可創建一個快捷方式。

(2)軟鏈接(Symbolic Link)

  • 特性
    1. 文件類型:軟鏈接是文件系統中的一種鏈接類型,可以指向文件或目錄。
    2. 內容:軟鏈接本質上是一個指向目標文件或目錄路徑的文件系統條目。
    3. 創建工具:需要使用命令行工具 mklink 或 PowerShell 的 New-Item cmdlet 創建。
    4. 功能:提供與目標文件或目錄相同的訪問方式,用戶訪問軟鏈接時,就像訪問目標文件或目錄本身。

(3)比較

  • 實現方式:快捷方式是一個獨立的文件,包含了指向目標的路徑和其他元數據;軟鏈接是文件系統層級的鏈接,直接指向目標路徑。
  • 訪問方式:雙擊快捷方式會通過操作系統處理并打開目標;訪問軟鏈接時,操作系統直接將其視為目標文件或目錄的一部分。
  • 用途:快捷方式通常用于用戶界面的快捷訪問;軟鏈接用于文件系統級別的文件和目錄組織。

Windows 快捷方式和軟鏈接在實現和使用場景上有所不同。快捷方式更適合于用戶界面的快捷訪問和導航,而軟鏈接則更適合于文件系統級別的鏈接和組織。盡管它們在功能上有相似之處,但它們并不完全相同。

2.4 應用場景

  • 硬鏈接:適用于需要在同一卷內共享數據而不復制文件內容的情況。例如,同一文件的多個副本保持一致。
  • 軟鏈接:適用于需要跨卷、跨目錄、甚至跨網絡位置訪問文件或目錄的情況。例如,創建快捷方式或替代目錄結構。

三、OneDrive中的應用

本節指的是你需要OneDrive的自動同步功能,而不是簡單的云存儲功能。

在 Windows 操作系統中,文檔、圖片、音樂和視頻等文件夾是系統預定義的特殊文件夾,通常稱為用戶文件夾(User Folders)或個人文件夾(Personal Folders)。這些文件夾的主要作用是方便用戶組織和管理不同類型的個人文件。

這些目錄默認在用戶目錄下,也即操作系統所在分區下,如果你使用這些目錄、且像傳統做法一樣給電腦分了C盤、D盤等、且C盤不太大,就可以在這些文件夾上右鍵—屬性,在位置選項下修改默認存儲位置。

OneDrive 通過客戶端軟件在本地創建一個同步文件夾(默認位于用戶主目錄下,斷開OneDrive賬戶鏈接,在其他位置新建OneDrive文件夾即可改變默認位置,但沒必要),并通過網絡通信將本地文件夾與云端存儲保持同步。這種機制允許用戶在多個設備上訪問和管理相同的文件,提供了數據備份和跨設備訪問的便利性。通過文件系統監控、增量同步(只傳改動部分)和沖突處理等技術,OneDrive 實現了高效和可靠的文件同步服務

3.1 錯誤姿勢

文章開頭講到,Onedrive的自動備份功能,只能備份這幾個目錄,沒有其他選項,要想給其他目錄添加自動備份功能,可以在這些目錄下面為目標文件或目錄添加鏈接嗎?

根據前面講的,硬鏈接(/H)只能用于文件,不能跨區(或者說跨卷、跨越文件系統);軟鏈接(/D)可以用于文件和目錄,可以跨區;目錄鏈接(/J)是不能跨區的用于目錄的軟鏈接。根據需要設置即可,通常選擇軟鏈接。

如,我在視頻文件夾下為F盤的download 文件夾添加軟鏈接:

命令(直接使用CMD也可以的,命令就是前面講到的,都需要管理員權限打開終端命令行):

New-Item -ItemType SymbolicLink -Path C:\Users\14134\Videos\VideoBackup -Target  F:\download  

在這里插入圖片描述

CMD示例:

mklink /D C:\Users\14134\Videos\test   F:\download

在這里插入圖片描述


軟鏈接只是指向所鏈接的文件或目錄,不會占用和目標相似的空間,只會占用極小的空間(最多幾個字節左右),硬鏈接一點額外空間也不占。

但你在Windows中在軟鏈接上右鍵、屬性,他會顯示目標文件或目錄的大小,dir /s命令也是如此,這只是一個邏輯問題,便于你通過鏈接文件也能查看目標的大小信息。

用下面的方法就可以看到軟鏈接文件本身的大小(powershell):

# 替換為你的軟鏈接文件路徑
$linkPath = "C:\Users\14134\Videos\VideoBackup"
# 獲取軟鏈接文件信息
$linkInfo = Get-Item -Path $linkPath
# 輸出軟鏈接文件的大小
Write-Host "軟鏈接文件大小: $($linkInfo.Length) 字節"

在這里插入圖片描述
或者使用Disk Genius軟件,可以看到這個文件夾是空的。


現在使用OneDrive備份“視頻”這個目錄,你會發現:
在這里插入圖片描述


再使用硬鏈接:
在這里插入圖片描述
OneDrive可以備份了:
在這里插入圖片描述

同樣的,目錄鏈接也是不能備份的。


原因:

  • OneDrive是跨設備、跨系統的備份系統;
  • 硬鏈接可以代表目標本身,而符號鏈接只是目標的路徑;
  • 軟鏈接若能備份,則會有這些危險:跨平臺一致性、惡意鏈接、數據完整性、循環引用等。

3.2 好像可行的嘗試

若是直接在OneDrive目錄下創建軟鏈接呢?

即將前面的“圖片、視頻、文檔”等支持備份的目標直接更換為OneDrive文件夾:

C:\Users\14134\OneDrive
C:\Users\14134\Videos>mklink /D C:\Users\14134\OneDrive\VideoBackup   F:\download
為 C:\Users\14134\OneDrive\VideoBackup <<===>> F:\download 創建的符號鏈接

可以看到OneDrive立刻開始了備份:
在這里插入圖片描述


看起來解決問題了。

其實,問題不少:

  1. 本地或云端修改、增刪的操作都不會自動與另一側同步,需要手動 關/開 OneDrive的備份開關;
  2. 這是軟鏈接本身特性以及OneDrive限制導致的;
  3. 這好像只用了OneDrive的備份、存儲功能,并不能自動同步。

OneDrive 同步特定文件夾中的文件,例如桌面、文檔和圖片、OneDrive文件夾,是因為這些文件夾通常包含個人用戶需要經常訪問和更新的文件。OneDrive 會持續監控這些文件夾中的更改,并在檢測到更改時自動將它們同步到云端。OneDrive 無法自動同步軟鏈接指向的文件夾內容更改,主要有以下幾個原因:

  1. 技術限制: OneDrive 同步功能是基于文件系統更改的。當文件或文件夾發生更改時,OneDrive 會收到操作系統通知,并相應地更新云端中的文件。然而,軟鏈接是一種文件系統指針,指向另一個文件或文件夾的位置。當軟鏈接指向的文件或文件夾發生更改時,OneDrive不會收到操作系統通知,因為更改發生在軟鏈接本身之外

  2. 復雜性問題: 如果 OneDrive 能夠自動同步軟鏈接指向的文件夾內容更改,則需要額外的邏輯來跟蹤軟鏈接并識別何時需要更新它們。這將增加 OneDrive 的復雜性,并可能導致性能問題。

  3. 潛在風險: 允許 OneDrive 自動同步軟鏈接指向的文件夾內容更改可能會帶來潛在風險。例如,如果用戶不小心刪除或移動了軟鏈接指向的文件或文件夾,OneDrive可能會繼續嘗試同步它們,導致數據丟失或損壞。

  4. 替代方案: 為了解決這些限制,OneDrive 提供了其他方法來同步軟鏈接指向的文件夾內容。用戶可以手動將軟鏈接指向的文件夾復制到 OneDrive文件夾中,或者使用第三方備份工具來同步它們。

這些也是OneDrive尚未支持自動同步自定義目錄的部分原因。

3.3 合理的解決方案

(1)將需要同步的內容本身放在支持同步的那些目錄下面

包括:文檔、圖片、視頻、音樂、桌面和OneDrive文件夾。

如果你沒有給硬盤分區的好習慣,或者有一個1TB的系統盤,這是個很方便、好用的做法。

(2)編寫腳本輔助

如果你一定要使用軟鏈接的方式,我有一個參考:你在(僅)OneDrive文件夾下刪除內容的時候,它會同步你的軟鏈接指向目標的更改。

可以寫個bat腳本,就新建和刪除輔助文件(OneDrive文件夾下),用來同步你的軟鏈接更改。不過這依然是手動同步,和開關OneDrive的同步開關是一樣的。

(3)借助同步軟件

使用(1)的方法雖然很好,但如果你想同步你的一個工作目錄(放在了支持自動同步的那幾個目錄下),就可能會有這幾個問題:

  1. 工作文件改動極其頻繁,而OneDrive同步實時性極強,這可能會消耗一點點CPU和網絡資源;
  2. 你只想定時備份,比如每天要下班的時候。

這時候,就可以考慮使用同步軟件來完成這些需求了。

比如:https://www.goodsync.com/cn

該軟件支持跨平臺、雙向同步、自動同步、文件過濾、腳本等功能。常見云存儲均可鏈接,如:OneDrive、Google Drive、iCloud、Dropbox、MEGA、SFTP等(不過是付費的$20一年,一個月試用)。

一邊選擇本地文件夾,一邊選擇OneDrive(登錄后選)的文件夾:
在這里插入圖片描述

在設置中選擇雙向同步(如果只備份就選擇單向),在自動選項下即可設置同步的時機,計劃里面還可以設置定時同步:
在這里插入圖片描述

設置后保持后臺運行即可,測試發現同步功能確實好用,兩端操作后同步很及時。

免費版不能自動實時同步,$20一年如果貴的話,網上有那種。或者試試別的備份軟件,不展開說了。

(4)其他云存儲

使用OneDrive相對來說是最劃算的,Microsoft 365家庭版,一個人一年就幾十,容量1TB。

Google Drive、iCloud、阿里云、百度云也可以用,基本都支持同步自定義文件夾。或者結合Alist、RaiDrive等軟件使用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/44358.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44358.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44358.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

智能貓砂盆兩種類型怎么選?深度剖析熱門前三的品牌!

應該也有很多鏟屎官像我一樣&#xff0c;第一個入手的通常都是封閉式的智能貓砂盆&#xff0c;自動清潔是很好用&#xff0c;但問題也隨之而來。有時候滾筒式的智能貓砂盆會在清潔過程中將砂團摔碎&#xff0c;導致糞便暴露出來產生臭味&#xff0c;這樣我們回來不得不又再次進…

LangChain —— Prompt Templates

文章目錄 一、什么是 Prompt Templates1、String PromptTemplates2、ChatPromptTemplates3、MessagesPlaceholder 留言占位符 二、如何使用 Prompt Templates 一、什么是 Prompt Templates 提示模板有助于將用戶輸入和參數轉換為語言模型的指令。這可用于指導模型的響應&#x…

LangChain框架詳解

LangChain框架詳解 LangChain是一個基于語言模型開發應用程序的強大框架&#xff0c;旨在幫助開發人員簡化與大模型交互、數據檢索以及將不同功能模塊串聯起來以完成復雜任務的過程。它提供了一套豐富的工具、組件和接口&#xff0c;使開發人員能夠輕松構建上下文感知和具備邏…

基于stm32+小程序開發智能家居門禁系統-硬件-軟件實現

視頻演示&#xff1a; 基于stm32智能家居門禁系統小程序開發項目 視頻還有添加刪除卡號&#xff0c;添加刪除指紋&#xff0c;關閉繼電器電源等沒有演示。 代碼Git&#xff1a; https://github.com/Abear6666/stm32lock 總體功能&#xff1a; 本門禁系統主要解鎖功能分別為卡…

沖積圖(alluvial plot)展示競爭性內源RNA(ceRNA)網絡

導讀&#xff1a; 用沖積圖展示ceRNA網絡可以更好地查看競爭和吸附關系&#xff0c;讓靜態的圖&#xff0c;“流動”起來。 沖積圖簡介 Alluvial plot&#xff08;沖積圖&#xff09;是一種流程圖&#xff0c;最初設計用于展示網絡結構隨時間的變化。這種圖表特別適用于展示…

sed的替換可用:斜杠/,豎或|,井號# 等符號, 但是查找只能用斜杠/ , sed的查找和替換可以一起用 筆記240711

sed的替換可用:斜杠/,豎或|,井號# 等符號, 但是… … 查找只能用斜杠/ 替換必須用s開頭, 如:s/ , s| , s# 例如: s/正則/替換內容/s/正則/替換內容/gs|正則|替換內容|s|正則|替換內容|gs#正則#替換內容#s#正則#替換內容#g 當內容包含斜杠/時, (例如路徑) , 使用 豎或|,井號…

06_TypeScript 中的函數

TypeScript 中的函數 一、函數的定義es5 定義函數的方法TypeScript 定義函數的方法ts 中定義方法傳參 二、可選參數三、默認參數&#xff08;跟可選參數一樣&#xff09;四、剩余參數&#xff08;三點運算符的應用&#xff09;五、函數重載六、箭頭函數 es6 一、函數的定義 es…

Windows圖形界面(GUI)-SDK-C/C++ - 編輯框(edit)

公開視頻 -> 鏈接點擊跳轉公開課程博客首頁 -> 鏈接點擊跳轉博客主頁 目錄 編輯框(edit) 控件樣式 創建控件 初始控件 消息處理 示例代碼 編輯框(edit) 控件樣式 編輯框&#xff08;Edit Control&#xff09;是Windows中最常用的控件之一&#xff0c;用于接收用戶…

python 知識點累積

.items() tinydict {Google: www.google.com, Runoob: www.runoob.com, taobao: www.taobao.com}print (tinydict.items())運行結果 dict_items([(Google, www.google.com), (Runoob, www.runoob.com), (taobao, www.taobao.com)]) 返回的 dict_items([...]) 是一個字典項的…

【持續集成_05課_Linux部署SonarQube及結合開發項目部署】

一、Linux下安裝SonarQube 1、安裝sonarQube 前置條件&#xff1a;sonarQube不能使用root賬號進行啟動&#xff0c;所以需要創建普通用戶及 其用戶組 1&#xff09;創建組 2&#xff09;添加用戶、組名、密碼 3&#xff09;CMD上傳qube文件-不能傳到home路徑下哦 4&#xff09…

王牌站士Ⅳ--矢量數據庫對 RAG 效率的影響

前言 近年來&#xff0c;檢索增強生成 (RAG) 模型越來越受歡迎。RAG 模型利用大型神經網絡以及外部知識源的檢索機制。這使得模型擁有的知識比其內部存儲的更多&#xff0c;從而使其能夠為廣泛的主題和領域生成高質量的輸出。 影響 RAG 模型性能的關鍵因素之一是從外部源檢索相…

C++之STL簡介

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言一、STL是什么二、STL的發展歷史三、STL的組成部分3.1 容器&#xff08;Containers&#xff09;3.2 迭代器&#xff08;Iterators&#xff09;3.3 算法&#xf…

【啟明智顯分享】ESP32-S3 4.3寸觸摸串口屏HMI應用方案:WIFI/藍牙無線通信助力烘干設備實現遠程遙控

技術不斷進步&#xff0c;人們對烘干設備的美觀度、功能多樣性提出更高要求&#xff0c;傳統的數碼管顯示、按鍵式控制已經無法滿足客戶的需求。用智能屏替代傳統的數碼管可以很好的解決這個問題&#xff0c;為用戶帶來更好的人機交互體驗。 基于此&#xff0c;啟明智顯提出將樂…

solidity實戰練習2--ERC20實現

//SPDX-License-Identifier:MTT pragma solidity ^0.8.24;interface erc20{function name()external view returns (string memory);//查看代幣的名稱function symbol() external view returns(string memory);//查看代幣簡稱function totalSupply()external view returns(uint…

低代碼:架起產教融合的“立交橋”

隨著信息技術的飛速發展&#xff0c;傳統的軟件開發模式正面臨著前所未有的挑戰。為了應對這一挑戰&#xff0c;低代碼平臺應運而生&#xff0c;其通過簡化開發流程、提高開發效率&#xff0c;成為了推動產業與教育深度融合的重要力量。本文將探討低代碼平臺如何架起產教融合的…

C++基礎(十八):繼承(重點)

各位看官&#xff0c;大家好&#xff01;今天我們將探討C中的三大特性之一&#xff1a;繼承。繼承是一種面向對象編程的重要概念&#xff0c;它允許我們通過創建新的類&#xff0c;從而復用和擴展現有類的功能。通過繼承&#xff0c;我們不僅能夠提高代碼的可重用性和可維護性&…

算法刷題筆記 KMP字符串(C++實現,并給出了求next數組的獨家簡單理解方式)

文章目錄 題目描述基本思路實現代碼 題目描述 給定一個字符串S&#xff0c;以及一個模式串P&#xff0c;所有字符串中只包含大小寫英文字母以及阿拉伯數字。模式串P在字符串S中多次作為子串出現。求出模式串P在字符串S中所有出現的位置的起始下標。 輸入格式 第一行輸入整數…

docker拉取鏡像,報錯error pulling image configuration: download failed after attempts=6: dial tcp 157.240.1

error pulling image configuration: download failed after attempts6: dial tcp 157.240.10.32:443: i/o timeout docker compose pull docker pull langgenius/dify-web:0.6.13 重啟docker sudo systemctl restart dockerhttps://stackoverflow.com/questions/72353203/do…

9.5 柵格圖層符號化多波段彩色渲染

文章目錄 前言多波段彩色渲染QGis設置為多波段彩色二次開發代碼實現多波段彩色 總結 前言 介紹柵格圖層數據渲染之多波段彩色渲染說明&#xff1a;文章中的示例代碼均來自開源項目qgis_cpp_api_apps 多波段彩色渲染 以“3420C_2010_327_RGB_LATLNG.tif”數據為例&#xff0c…

代碼隨想錄打卡第二十一天

代碼隨想錄–二叉樹部分 day 21 二叉樹第八天 文章目錄 代碼隨想錄--二叉樹部分一、力扣669--修建二叉搜索樹二、力扣108--將有序數組轉換為二叉搜索樹三、力扣538--把二叉搜索樹轉換為累加樹 一、力扣669–修建二叉搜索樹 代碼隨想錄題目鏈接&#xff1a;代碼隨想錄 給你二叉…