类似于众多网盘,虽然微软的13.107.136.9这个经过anycast的CDN节点很快,但是Onedrive在使用中一样有着诸多的限制,微软的也在它的Sharepoint文档中也有介绍

https://docs.microsoft.com/zh-cn/sharepoint/dev/general-development/how-to-avoid-getting-throttled-or-blocked-in-sharepoint-online

但这篇文章写的过于复杂,简单来说,就是Onedrive在同步时,如果速度过快,同时开启过多的机器同时开始同步,就会触发限制。

在使用Onedrive时可以发现,Onedrive上传原理是先上传一段文件,然后开始hash文件,然后再继续上传另一段

这可以在任务管理器中观察到,表现为上传速度一般,但是硬盘却有很大的读写,如图,E盘读取速度快,但是上传速度很慢,这就是Onedrive客户端在hash文件过程

所以影响Onedrive上传速度之一的因素就是你的硬盘读写,你如果你拥有SSD,那么上传速度会明显增多

同时,过快的速度一样会导致Onedrive触发限制,具体表现为客户端提示同步延迟

一般来说,如果你保持200-300M的网速上传半小时,或者同时上传多个大于3-4GB的文件会触发这个限制,触发这个限制后,会导致速度变成0,并且随着时间缓慢推移

如果需要解决这个问题,则需要重置Onedrive客户端,操作如下:

1.按 Windows 徽标键 按 Windows 徽标键和“R”打开“运行”对话框。
键入 %localappdata%\Microsoft\OneDrive\onedrive.exe /reset 并按“确定”。 “命令”窗口可能会一闪而过。
2.转到“开始 按 Windows 徽标键”,在搜索框中键入 OneDrive,然后单击“OneDrive”桌面应用,手动启动 OneDrive
3.注意: 如果在重置之前选择了仅同步部分文件夹,则同步完成之后将需要再次执行该操作。

在重置后,经过Onedrive重新hash过已经上传的文件后,可以看到Onedrive已经没有那个报错,同时已经开始继续上传。

要避免出现这个错误,就要避免速度过快的上传,同时尽量避免上传3GB以上的文件

在2019年11月4日以后,微软放宽的上传机器数量限制,但是同时增加了上传下载带宽限制,表现为,每次登陆的客户端,只能在24小时同时上传或者下载不到990GB文件,如果超出则会红字报错,

同时Onedrive角标会显示一个红×

这个报错是微软新加的限制,目的是为了限制单词登陆24小时内的数据量,24小时后自动重置,经过实测,实际限制容量大小是992GB左右,在东8区是每天下午4点02分重置上传,如果为了解决这个错误,可以刷新token,或者干脆退出登录,再重新登录,便可以继续上传

接下来说不同网盘间迁移数据到Onedrive的限制,首先说常见的几种工具

1.本地客户端,比如Airexplorer和rclone

这两种软件都是常见的本地客户端软件,但是由于Onedrive的限制,尤其是同步延迟的限制,会导致Onedrive官方客户端速度降为0,但是第三方客户端,会直接认为同步出错,并且开始重复上传,本来这没什么,但是Onedrive中有一个版本功能,每次重新上传同一个文件,都会被认为重新上传了同一个的文件的不同版本,会导致出现一个文件存了好多遍的现象,可以在存储标准里看到,比如下图,一个文件居然传了6次占了6倍的空间,你还需要手动去删除版本

这个版本本来可以通过关闭Onedrive的版本控制来避免,但是在2018年10月,微软删除了Onedrive版本控制并且强制保留,可参考微软文档:

https://techcommunity.microsoft.com/t5/SharePoint/quot-No-Versioning-quot-option-not-appearing-in-versioning/td-p/284410

因此这个错误基本无法避免,除非你同步的都是很小的文件,基本都小于3GB,而且用较慢的网速细水长流,但是微软文档中说通过开发人员api可以继续关闭版本控制,可以参考rclone文档关于onedrive文件版本的操作:

https://rclone.org/onedrive/#versioning-issue

2.微软官方迁移工具SharePoint Migration Tool

这个工具本质是通过本地挂载onedrive文件为本地文件夹,并且通过本地流量上传到另一个onedrive帐号的操作,可参考文档

https://docs.microsoft.com/zh-cn/sharepointmigration/how-to-use-the-sharepoint-migration-tool

这个软件由于是微软官方出品,所以几乎没有什么bug,但是需要事先将onedrive映射为本地文件夹,而支持这一功能的系统需要windows10 1809以后的版本,而且带宽则取决于你本地的带宽,缺陷就是只受限于onedrive/sharepoint账号之间的同步

3.使用第三方迁移服务迁移

这种方法我极度不推荐,因为错误率非常高,并且会导致同一个文件缓存的bug,这里只介绍两个常用的迁移工具

Multcloud

最常见的多网盘服务商,可以登录多个网盘,并且在后台选择迁移文件,迁移完全使用Multcloud服务器,不占用本地带宽,但是需要购买会员,会员价格很贵,而且迁移速度一般,不推荐,价格可参考官网:

https://www.multcloud.com/price

在网站后台可以看到你自己添加的网盘,可以添加多个网盘

Mover

这是一家被微软收购的服务商,可以认为是微软自己出品的产品,可参考微软自己的文档:

https://blogs.microsoft.com/blog/2019/10/21/microsoft-acquires-mover-to-simplify-and-speed-file-migration-to-microsoft-365/

这家服务商也支持多个网盘,比如Onedrive和Google drive,dropbox等等,但是目前支持美国的ip打开使用,可以挂代理后打开使用

这家服务商并不是特别的智能,你选择了多少文件夹,它就会一次性迁移多少文件,而且是同时下载,所以会消耗大量的api,对于google drive等,则会瞬间消耗光当天的api额度,而且对于大于3-4GB的文件,会大量提示Downloaded file is smaller than expected, possibly due to disk space issues错误

因此这个工具迁移的失败率非常高,我自己大文件迁移没有一次成功的,而且最后尝试失败后,还会给你发个complete邮件,然而实际迁移的文件1/100都没有

结论就是第三方平台工具的迁移非常不靠谱,对于小文件的迁移或许可以临时使用,但是大文件的迁移千万不要用,绝对会出错,而且第三方迁移平台失败后,会在文件夹里留下大量缓存文件,只有去网页才能发现,缓存文件大量以~tmp开头,需要手动查看清理

4.使用官方的复制功能或者Flow来迁移

这里要引出一个概念,Onedrive产品有两个,一个是Onedrive,归Onedrive团队开发,一个是Onedrive for business,归sharepoint团队开发。

Onedrive就是个人帐号类似outlook所使用的,最大支持单文件100GB,并且可以不限制文件大小复制文件,在Office365个人版和家庭版都是使用的这个。

Onedrive for business就是企业帐号,教育帐号工作账号都是这种,一般后缀为on.microsoft.com,Office365企业级订阅都是用的这个,最大只支持上传15GB文件,而且复制文件只支持单文件最大500MB

因此你如果想通过官方的复制功能来迁移,则只能迁移500MB大小以下文件,而Flow(工作流)就是在上传文件后,自动通过复制功能复制一个文件到新帐号上,因此它同样受到复制文件最大500MB的限制

至此可以总结出一个结论,对于大文件的迁移,要么自己下载出来手动再上传,要么使用官方的Sharepoint迁移工具,归根到底都需要自己本地跑流量迁移,想要类似google drive直接迁移文件是不可能的。

最后留个截图,纪念下自己成为亚太地区使用Onedrive第一人,打破由Mizuha创造的197TB记录,