January 4, 2023

有关符号链接的小问题

符号链接与云盘同步

在之前的 云盘同步及 Obsidian 相关 文章里有提到:

兜兜转转还得是微软的 OneDrive,在 cmd 使用:

mklink /d "D:\OneDrive\Songs" "D:\osu\Songs"`

创建链接使 D:\OneDrive 这个我个人设定的 OneDrive 文件夹(默认在哪来着不记得了)里出现一个 Songs 文件夹,进去一看好家伙是 D:\osu\Songs 里的东西,这样 Windows 方面成功。

其中使用的指令创建了一个符号链接,其中真正的文档处在后者 D:\osu\Songs 中,而前者 D:\OneDrive\Songs 是指向后者的一个符号链接,注意前者原先是不能存在 Songs 文件夹的,否则无法创建符号链接。

这种方案这会引发 OneDrive 无法正确显示是否已同步文件的问题,解决办法是先转移文件到别的地方,右键删除符号链接:

在网上查询了许多方法都不管用,会出现删除后无法创建同名文件夹,文件夹会自动添加 2 后缀的 bug,感觉没死一样阴魂不散。

解决办法是直接将符号链接改名为一串极度不会重复的名称(比如一串哈希值什么的)后右键删除,这样就能新建同名文件夹

并将文件转移至网盘,再使用 mklink /d "D:\osu\Songs" "D:\OneDrive\Songs" 即可。

符号链接与 VSCode 和 Git

根据以上步骤网盘存储真实数据,使用处使用符号链接将我项目里的 _post 文件夹改为指向 iCloud 里的 帖子 文件夹后,用 VSCode 打开项目文件夹会看到 _post 文件夹后提示这是一个符号链接,和平常一样没有任何问题。

但问题出现在 Git 同步上,git push 后并不会将符号链接所指向的文件夹上传至 GitHub,而是符号链接本身。

对于我来说这并不影响,因为我使用 .release_tool/main.py 进行构建并发布至两个仓库 —— 一个是源文件仓库,一个是构建后的 GitHub Pages 仓库 —— 但如此提醒我们不要滥用符号链接。

因为这玩意又难删资料又这么少玩死了没人管你😡️