前言
使用 Rclone 给 OneDrive 传输文件时可能会遇到速度非常慢、断联等一些问题,其根源是触发了 OneDrive API 的限制,而默认的 Rclone 内置 API 由于非常多人在同时在使用所以这些问题也就愈发明显。使用自建的私有 API 连接 OneDrive 可大幅改善这些情况,而且对于三个月的 Office 365 E5 开发者试用版,平时偶尔用用 Rclone 还会有自动续订的可能性,比起刻意刷 API 的方式更为安全和稳定。此外自建的 API 还可以给其它的账号和其它应用使用。
速度测试
前者为使用 Rclone 自带 API ,后者为自建 API ,可以很明显的看出速度相差了 10 多倍。
创建 OneDrive API
获取 Client ID
- 进入 Microsoft Azure 应用注册页面。点击
新注册
。
- 名称随意,账户类型选择最后一个,重定向 URL 填写
http://localhost
。
- 创建成功后你会看到 Client ID(客户端 ID),复制并保存好。
获取 Client secret
- 点击
证书和密码
,按照图中序号的顺序操作添加密码。
- 然后你会看到 Client secret(客户端密码),复制并保存好。
设置 API 权限
- 点击
API 权限
,按照图示进行操作,添加Files.Read
、Files.ReadWrite
、Files.Read.All
、Files.ReadWrite.All
、offline_access
、User.Read
这些权限。
- 最后确认下权限是否添加完整。
获取 token
- 在本地电脑上下载 rclone。
- 以 Windows 为例子,解压并进入
rclone.exe
所在文件夹,在资源管理器地址栏输入cmd
,回车就会在当前路径打开命令提示符。 - 替换以下命令中的
Client_ID
、Client_secret
并执行。
接下来会弹出浏览器,要求你登录账号进行授权。授权完后命令提示符窗口会出现以下信息:
{"access_token":"xxxxxxxxxxxxxxxxxx","expiry":"2020-02-22T21:18:39.5036298+08:00"}
整个内容(包含括号)就是 token ,复制并保存好。
Rclone 连接 OneDrive
输入 rclone config
命令,会出现以下信息,参照下面的注释进行操作。
点击查看
挂载 OneDrive
如果你需要挂载到本地目录,可以参考博主之前写的挂载教程,这里就不再赘述了。
其它说明
私有 API 局限性
自建私有 API 虽然能改善上传体验,但如果使用过于频繁还是会上传受限。
OneDrive API 限制阈值是多少?
微软没有明确说明 OneDrive API 的限制,以下为官方文档原文:
根据使用情况,我们会对阈值进行微调,以便用户可以使用最大数量的资源,而不会降低可靠性和性能。
通过查看其它类型的 API 限制说明可以猜测到的是有总次数和频率这个两种限制。总次数是指一天内所能调用的次数,而频率为每分钟所能调用的次数。而一旦达到限制阈值,那么就会限制文件的上传。
既然无法从官方文档中获得准确数值,那么是否能通过实际测试来获得这个准确数值呢?答案是否定的。在实际测试中并没有发现任何规律,所以说是这个限制是动态调节的,也符合官方文档的说明。
如何避免 OneDrive API 受限?
不要在短时间内上传过多的文件,文件大小无所谓,关键在于文件数量。
关于 Office 365 E5 自动续订
根据博主几年的开发者试用版使用经验来看,只要你使用自建的私有 API 就可能续订,至于频率并没有一个标准,也并不是越多越好。刻意刷 API 可能得不偿失,尤其是使用 GitHub Actions ,因为服务器是微软 Azure 的,那么多人以相似的方式无意义的刷 API 想要识别是非常容易的。
from http://web.archive.org/web/20210717045902/https://p3terx.com/archives/rclone-connect-onedrive-with-selfbuilt-api.html
-----
参考文章:https://rclone.org/onedrive/
https://github.com/rclone/rclone
----
rclone mod。
gclone
English 简体中文
A modified version of the rclone Provide dynamic replacement sa file support for google drive operation
installation
bash <(wget -qO- https://git.io/gclone.sh)
// View version information
gclone version
Instructions
1.service_account_file_path Configuration
add service_account_file_path
Configuration.For dynamic replacement service_account_file(sa file). Replace configuration when rateLimitExceeded
error occurs rclone.conf
example:
[gc]
type = drive
scope = drive
service_account_file = /root/accounts/1.json
service_account_file_path = /root/accounts/
root_folder_id = root
/root/accounts/
Folder contains multiple access and edit permissions service account file(.json)*.
2.Support incoming id
If the original rclone is across team disks or shared folders, multiple configuration drive letters are required for operation. gclone supports incoming id operation
gclone copy gc:{folde_id1} gc:{folde_id2} --drive-server-side-across-configs
folde_id1 can be:Common directory, shared directory, team disk.
gclone copy gc:{folde_id1} gc:{folde_id2}/media/ --drive-server-side-across-configs
gclone copy gc:{share_fiel_id} gc:{folde_id2} --drive-server-side-across-configs
from https://github.com/donwa/gclone
------
https://github.com/rclone/rclone-webui-react
No comments:
Post a Comment