【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.mzph.cn/web/44358.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能猫砂盆两种类型怎么选?深度剖析热门前三的品牌!

应该也有很多铲屎官像我一样&#xff0c;第一个入手的通常都是封闭式的智能猫砂盆&#xff0c;自动清洁是很好用&#xff0c;但问题也随之而来。有时候滚筒式的智能猫砂盆会在清洁过程中将砂团摔碎&#xff0c;导致粪便暴露出来产生臭味&#xff0c;这样我们回来不得不又再次进…

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;最初设计用于展示网络结构随时间的变化。这种图表特别适用于展示…

06_TypeScript 中的函数

TypeScript 中的函数 一、函数的定义es5 定义函数的方法TypeScript 定义函数的方法ts 中定义方法传参 二、可选参数三、默认参数&#xff08;跟可选参数一样&#xff09;四、剩余参数&#xff08;三点运算符的应用&#xff09;五、函数重载六、箭头函数 es6 一、函数的定义 es…

【持续集成_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 模型性能的关键因素之一是从外部源检索相…

【启明智显分享】ESP32-S3 4.3寸触摸串口屏HMI应用方案:WIFI/蓝牙无线通信助力烘干设备实现远程遥控

技术不断进步&#xff0c;人们对烘干设备的美观度、功能多样性提出更高要求&#xff0c;传统的数码管显示、按键式控制已经无法满足客户的需求。用智能屏替代传统的数码管可以很好的解决这个问题&#xff0c;为用户带来更好的人机交互体验。 基于此&#xff0c;启明智显提出将乐…

C++基础(十八):继承(重点)

各位看官&#xff0c;大家好&#xff01;今天我们将探讨C中的三大特性之一&#xff1a;继承。继承是一种面向对象编程的重要概念&#xff0c;它允许我们通过创建新的类&#xff0c;从而复用和扩展现有类的功能。通过继承&#xff0c;我们不仅能够提高代码的可重用性和可维护性&…

9.5 栅格图层符号化多波段彩色渲染

文章目录 前言多波段彩色渲染QGis设置为多波段彩色二次开发代码实现多波段彩色 总结 前言 介绍栅格图层数据渲染之多波段彩色渲染说明&#xff1a;文章中的示例代码均来自开源项目qgis_cpp_api_apps 多波段彩色渲染 以“3420C_2010_327_RGB_LATLNG.tif”数据为例&#xff0c…

常见条件控制算法流程图

内容讲解&#xff1a;流程控制[if…else…(if…elif…else…),while,for] 常见条件控制算法流程图高清图

新手教学系列——高效管理MongoDB数据:批量插入与更新的实战技巧

前言 在日常开发中,MongoDB作为一种灵活高效的NoSQL数据库,深受开发者喜爱。然而,如何高效地进行数据的批量插入和更新,却常常让人头疼。今天,我们将一起探讨如何使用MongoDB的bulk_write方法,简化我们的数据管理流程,让代码更加简洁高效。 常规做法:find、insertone…

【Linux】常见指令收官权限理解

tar指令 上一篇博客已经介绍了zip/unzip指令&#xff0c;接下来我们来看一下另一个关于压缩和解压的指令&#xff1a;tar指令tar指令&#xff1a;打包/解包&#xff0c;不打开它&#xff0c;直接看内容 关于tar的指令有太多了&#xff1a; tar [-cxtzjvf] 文件与目录 ...…

C++运行时类型识别

目录 C运行时类型识别A.What&#xff08;什么是运行时类型识别RTTI&#xff09;B.Why&#xff08;为什么需要RTTI&#xff09;C.dynamic_cast运算符Why&#xff08;dynamic_cast运算符的作用&#xff09;How&#xff08;如何使用dynamic_cast运算符&#xff09; D.typeid运算符…

各地户外分散视频监控点位,如何实现远程集中实时监看?

公司业务涉及视频监控项目承包搭建&#xff0c;此前某个项目需求是为某林业公司提供视频监控解决方案&#xff0c;需要实现各地视频摄像头的集中实时监看&#xff0c;以防止国家储备林的盗砍、盗伐行为。 公司原计划采用运营商专线连接各个视频监控点位&#xff0c;实现远程视…

跟着李沐学AI:线性回归

引入 买房出价需要对房价进行预测。 假设1&#xff1a;影响房价的关键因素是卧室个数、卫生间个数和居住面积&#xff0c;记为x1、x2、x3。 假设2&#xff1a;成交价是关键因素的加权和 。权重和偏差的实际值在后面决定。 拓展至一般线性模型&#xff1a; 给定n维输入&…

MySQL 9.0 正式发行Innovation创新版已支持向量

从 MySQL 8.1 开始&#xff0c;官方启用了新的版本模型&#xff1a;MySQL 创新版 (Innovation) 和长期支持版 (LTS)。 根据介绍&#xff0c;两者的质量都已达到可用于生产环境级别。区别在于&#xff1a; 如果希望尝试最新的功能和改进&#xff0c;并喜欢与最新技术保持同步&am…

怎样在 C 语言中实现栈?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01; &#x1f4d9;C 语言百万年薪修炼课程 通俗易懂&#xff0c;深入浅出&#xff0c;匠心打磨&#xff0c;死磕细节&#xff0c;6年迭代&#xff0c;看过的人都说好。 文章目…

动手学深度学习(Pytorch版)代码实践 -循环神经网络-55循环神经网络的从零开始实现和简洁实现

55循环神经网络的实现 1.从零开始实现 import math import torch from torch import nn from torch.nn import functional as F from d2l import torch as d2l import matplotlib.pyplot as plt import liliPytorch as lp# 读取H.G.Wells的时光机器数据集 batch_size, num_ste…

ElasticSearch第一天

学习目标&#xff1a; 能够理解ElasticSearch的作用能够安装ElasticSearch服务能够理解ElasticSearch的相关概念能够使用Postman发送Restful请求操作ElasticSearch能够理解分词器的作用能够使用ElasticSearch集成IK分词器能够完成es集群搭建 第一章 ElasticSearch简介 1.1 什么…