TL, DR: 用 Windows 符号链接把现存文件夹链接到 OneDrive 目录下。

背景

出于对硬盘安全的担忧,我决定将部分重要(但不一定敏感)的文件上云。Microsoft 365 家庭版有 1T 的 OneDrive 空间,而且和 Windows 系统的整合程度较好,因此选择了使用 OneDrive。

目前,OneDrive 只能够备份 C:\User\Username\OneDrive 目录下的文件和以下三个“重要电脑文件夹”:

onedrive_backup_limit.png
onedrive_backup_limit.png

但是,我的很多重要文件已经存储在了电脑的其他位置(例如非系统盘上、其他子文件夹下)。我不希望为了备份他们而将文件手动移动到 OneDrive 指定的文件夹下。

为了满足这个需求,我发现可以使用 Windows 符号链接 的方式,在不改变原文件位置、不额外占用空间的条件下将现存的文件夹备份到云端。

创建符号链接

符号链接是一种区别为快捷方式、软链接和硬链接的链接方式,可以将任意文件/文件夹链接到任意位置。

在 CMD 中,MKLINK 可用于创建各类链接。

> MKLINK
创建符号链接。

MKLINK [[/D] | [/H] | [/J]] Link Target

        /D      创建目录符号链接。默认为文件
                符号链接。
        /H      创建硬链接而非符号链接。
        /J      创建目录联接。
        Link    指定新的符号链接名称。
        Target  指定新链接引用的路径
                (相对或绝对)。

这里,我们使用 -D 创建目录符号链接。Link 我们指定为 OneDrive 中要存放备份文件的位置,Target 指定为现存的目录/文件的路径。

例如,我想要将 D:\Workspace\Archive 备份到 OneDrive 网盘的 Backup/WorkspaceArchive 文件夹,可以这样做:

  1. 首先打开 %HOMEPATH%\OneDrive,然后新建 Backup 文件夹,但不要创建 WorkspaceArchive 文件夹。
  2. 在当前路径下打开终端(按住 SHIFT + 鼠标右键点击选择“在此处打开Powershell窗口”)。
  3. 输入命令 CMD 进入 Windows 命令行,然后使用 MKLINK 创建链接。

    MKLINK /D %CD%\WorkspaceArchive D:\Workspace\Archive
  4. 打开 OneDrive 查看上传进度。上传完毕后,云端和现存文件夹就同步了。

当你修改现存文件夹的内容,云上的内容会自动改变。同样,如果删除云上的内容,现存的文件也会被删除。

onedrive_syncing_existing_files.png
onedrive_syncing_existing_files.png

参考资料