需求

1
我的onedrive文件夹在C盘,但是我在D盘有文件需要同步到onedrive文件夹内,并且,我不希望占用C盘空间

操作

  • 打开Terminal,选择cmd
    cmd
  • 输入mklink命令,命令语法为mklink [[/d] | [/h] | [/j]] <link> <target>
    cmd
  • 比如说,我在D盘有test文件夹,需要同步到C盘的onedrive里
    dir
  • 那么mklink命令这样写mklink /d "C:\Users\Yazov\OneDrive - MSFT\test" D:\test,注意,路径有空格就用英文双引号括起来
    cmd
    onedriveDir
    可以看到,成功了

同步测试

  • 我们在D盘创建一个文件
    d.txt
  • 可以看到onedrive里已经有文件了
    d.txt for onedrive
  • 但是在onedrive云盘里没有看到test文件夹
    onedrive cloud
  • 这时候就需要重新同步
    sync
    sync success
    同步成功
  • 从云盘里删除文件试试
    delete from cloud
    可以看到本地onedrive文件还在
    local
    这个时候不动,在重新同步一下,发现文件没了
    sync
  • 重新创建文件,从本地删除试试
    delete from local
    cloud
    从本地删除
    delete
    发现云上的文件也同步删除了
  • 我也试了释放本地空间的选项,发现无法释放,因为使用了符号链接的原因,一直是同步状态,哪怕已经同步上onedrive了也是如此
  • 在onedrive网页上测试移动文件到另外的地方,本地也会跟着移动,从别的盘移动到C盘onedrive目录里

测试重装系统

  • 我这里以hyper-v虚拟机为例
  • 重新登录上去之后,发现用符号链接的文件夹也出现在了onedrive文件夹里
    source
    重装系统之后的onedrive文件,可以看到videos文件夹
    重装系统
  • 在这里,我在本地电脑重新创建了test文件夹,同步到onedrive里,test文件夹里有a.txt,b.txt,c.txt三个文件
    local
  • 在虚拟机里同步
    VM
    把test文件夹剪切到其他地方,然后使用mklink命令
    cut
    mklink
    在虚拟机里进行添加文件操作
    虚拟机里进行添加文件操作
    local
  • 同步之后可以看到,本地onedrive也同步了虚拟机添加的文件,但是本地的符号链接失效了

最后

  • 符号链接同步onedrive的优缺点
    • 优点:
      • 如果文件不在onedrive所在盘的话,就不会占用所在盘的空间,对于onedrive在C盘的用户来说,是利好的
      • 可以从各个地方同步文件,不用把文件一股脑放在onedrive文件夹里
    • 缺点:
      • 同步需要主动同步。也就是先暂停同步,再重新同步,才会同步文件上去
      • 文件无法释放空间。始终需要文件保存再本地,不需要了也无法删除,对于本地空间是一种浪费行为
      • 同一个文件夹,只能有一台电脑进行符号链接(也算是个缺点吧)