我已经在网上读到了很多关于符号链接和 Windows 10 的问题,但没有读到我现在遇到的现象。所以这里是……
我的目标是通过符号链接将位于 SSD 驱动器单独数据分区上的文件夹(“我的音乐”)双向同步到 OneDrive 云。一切都运行正常……除了双向同步。不知何故,它仍然是一条单向的街道。:-(
数据分区和 Windows 系统分区都具有 NTFS 文件系统。数据分区的字母为 ( X:
)。我有一个现有的 OneDrive 帐户,其中还没有文件或文件夹。
据我目前了解,创建连接是可行的方法,尽管在这种情况下创建符号链接也可以。我遵循的程序如下:
- 在线开设了我的 OneDrive 帐户。
- 在我的计算机上设置 OneDrive。
- 将我的 OneDrive 的标准位置保留在系统分区上:
C:\Users\<my user name>\OneDrive
。 - 以管理员身份打开命令提示符。
- 使用以下命令创建连接:
mklink /J “C:\Users\<my user name>\OneDrive\My Music” “X:\My Music”
- 该
‘My Music’
链接显示为 Windows 资源管理器中 OneDrive 图标下方的一个文件夹。 - 测试与我的数据分区上的文件夹的链接是否
‘My Music’
有效。结果完美无缺。 - 转到 OneDrive 在线。该
‘My Music’
文件夹也出现在我的 OneDrive 在线中。 - 从我的电脑上传一个随机文件到
‘My Music’
文件夹中来测试同步。 - 上传的文件出现在我的 OneDrive 在线中。
- 返回电脑上的 Windows 资源管理器。上传的文件已
‘My Music’
通过创建的链接出现在数据分区上的文件夹中。
到目前为止一切顺利。我上传到 OneDrive 在线的任何内容都完美地出现在我的数据分区文件夹中。但问题是双向同步失败了。如果我更改了数据分区文件夹中的任何内容‘My Music’
,该更改确实会出现在链接的同一个 OneDrive 文件夹中(显然如此),但这就是它停止的地方:无法同步到 OneDrive 在线。这是怎么回事?解决方案是什么?
如果我使用的不是连接点而是符号链接,则会发生完全相同的情况:mklink /D “C:\Users\<my user name>\OneDrive\My Music” “X:\My Music”
我的第二个问题是:当我更改程序并首先创建连接(或符号链接)然后在计算机上设置 OneDrive 时,结果怎么可能恰恰相反?因此,在这种情况下,通过创建的链接将文件同步到 OneDrive 在线版可以正常工作,但如果我在 OneDrive 在线版中的“我的音乐”文件夹中更改任何内容,则该更改不会出现在我的数据分区上的文件夹中。同样,只有一种方法。
我就是搞不懂。有人能解答一下吗?提前谢谢!
答案1
每微软论坛中的这个主题,看起来 OneDrive 在 2017 年 5 月 31 日左右收到了来自别名(连接/符号链接)路径的文件更改事件的通知(参见标记为最佳回复的回复),但在 2018 年 1 月 17 日有人报告说它们被破坏了,标记为最佳回复的回复的作者似乎证实了这一点。
后来提出的“使用硬链接”建议不起作用,因为我相信 NTFS 中没有“目录硬链接”。
遗憾的是,我认为它现在已经坏了。
该帖子中提到了一些解决方法——OneDriveBully定期手动触发 OneDrive 的(完整?)同步,以及通用文件夹同步实用程序来双向同步两个目录(这会导致 2 倍磁盘空间,并且在必要时可能会带来很多麻烦,例如处理冲突)。我都不喜欢它们。
答案2
我觉得将我的桌面文件夹放在外部驱动器上不太安全,因为如果 SD 卡丢失或损坏,我的桌面将无法加载。因此,我更喜欢将桌面保留在本地 C: 驱动器上的默认位置,并将指向桌面的连接链接放入外部驱动器上的 OneDrive 文件夹中。
问题是,mklink /J
外部驱动器无法按预期同步到 OneDrive。它不会在文件更改时立即同步。(其他报告称它曾经可以工作,但截至 2019 年 1 月对我来说失败了)。
然而,连接桌面将要当计算机同步时重新启动(或者当用户注销并重新登录时)。对于某些目的来说,这可能就足够了。
例如,我偶尔只会在桌面上保存文件,因此我会将连接链接放入我的 OneDrive 文件夹(位于外部 SD 卡上)。我通常每天至少重启一次电脑,这样桌面每天都会同步。
(它会还当 onedrive 暂停然后取消暂停时同步,但一直手动暂停/取消暂停并不方便)
对于文档,我希望在文件更改时立即进行持续同步,因此我将我的文档文件夹移到了外部 SD 上的 OneDrive 中。如果 SD 卡丢失或损坏,我的帐户仍然可以登录和加载(因为这不依赖于文档文件夹)。
Mklink /H
不允许使用外部驱动器。
答案3
我知道这个话题已经很老了,但是问题仍然存在。如果源文件夹或文件不在 OneDrive 文件夹中,OneDrive(最初似乎是 Dropbox 的直接翻版,Dropbox 有同样的问题)不会同步符号链接文件。因此,最简单的解决方案是将原始(源)文件放入 OneDrive 文件夹,并将其符号链接到您想要编辑它们的其他任何目标。您可以在两个地方编辑它们,OneDrive 仍会同步它们。当然,如果目标文件夹再次同步(例如通过 Dropbox),那么该文件夹将不会同步它,但当您使用 OneDrive 和 Dropbox 时,这种情况相当罕见。
mklink /J "C:\...\OneDrive\SourceFolder" "C:\SomewhereElse\HardlinkedFolderToCreate"
对我来说很管用。我可以从两个文件夹中的任意一个编辑文件,并且 OneDrive 可以很好地同步它们。我还可以在线编辑它们(使用 OneDrive for Business,它可以同步到 SharePoint 库,但那应该没关系)。也应该可以与 Dropbox 一起使用。如果您需要反过来,请切换源和目标。
答案4
奇怪的是,对于较小的文件夹结构,符号链接和连接都可以正常工作。
但是,如果我将数十 GB 的文件夹结构与大约 100,000 个文件夹和文件连接或符号链接,它就不起作用了。相反,OneDrive 似乎永远处于“正在搜索更改”状态。