1.关于微软的onedriveAPI获取和授权:
进入 Microsoft Azure 应用注册页面。点击新注册
名称随意,账户类型选择最后一个,重定向 URL 填写http://localhost:53682/
创建成功后你会看到 Client ID(客户端ID),复制并保存好。
获取 Client secret
点击证书和密码,创建个标签,设置到期时间并获得密码。
设置 API 权限
点击左侧列表API 权限,添加权限,选择Microsoft Graph类,添加Files.Read、Files.ReadWrite、Files.Read.All、Files.ReadWrite.All、offline_access五个权限,加上默认的User.Read总共六个
回到rlcone,你可以按部就班编辑onedrive的配置,新增Client_ID和Client_secret进行配置,也可以本地电脑打开cmd用如下指令快速配置:
rclone authorize "onedrive" "Client_ID" "Client_secret"
复制token到配置文件里,新增如下内容:
token = {"access_token":"xxxxxxxxxxxxxxxxxx","expiry":"2020-02-22T21:18:39.5036298+08:00"}
rclone拷贝至OneDrive的api配置基本就是这样了
2.拷贝至Onedrive常见设置和报错解决
- 拷贝到OneDrive报错size differ
这是一个已知的微软的问题,在上传办公文件(word,xls等)和html文档的时候,OneDrive会偷偷修改文件大小
解决方法:拷贝完毕其他文件后确认只剩这些因为size differ报错而无法拷贝的文件了,则添加下述指令
--ignore-checksum --ignore-size
忽略文件检查指令,强制拷贝。
来自 [rclone.org]
- 如果遇到提示abuse文件无法拷贝
请谷歌侧使用文件所有者账号拷贝,如果是团队盘,则使用管理员账号(SA群组则提升权限至管理员),并添加以下参数:
--drive-acknowledge-abuse
拷贝被标记abuse违规文件,此参数依然不能拷贝病毒文件,也不能拷贝不是自己所有权的违规文件
- 对于永久无法下载的403bug文件的处理方法:
因为Google drive的bug,某些未分享未达到下载限额的文件,会永久提示达到下载配额,如果通过下载后拷贝至OneDrive等网盘,会报错403error,downloadQuotaExceeded
,这些文件只能通过删除后再次上传解决。
首先,我们需要获得bug文件清单,使用rlcone将日志级别-v改成-q仅输出错误日志,搭配log日志文件输出,重试次数设置为1次:-q --log-file=/root/error.txt --retries 1
演示完整拷贝指令如下:
gclone copy GdriveSA:{0AHKb_1xko1U4Uk9PVA}movies/M-team Onedrive_M-team:M-team --transfers 16 --cache-chunk-size 20M --bwlimit 120M --max-size 100G --include-from "/root/.config/rclone/M-teamCopyList.txt" -q --stats 15s --log-file=/root/error.txt --retries 1
获取到错误日志大概像这样子:
2020/11/04 03:29:49 ERROR : 91pxxn-180203-mixed-pack/木秀林_精品3P01 -1080P高清完整版.mp4: Failed to copy: failed to open source object: open file failed: googleapi: Error 403: The download quota for this file has been exceeded., downloadQuotaExceeded
2020/11/04 03:29:49 ERROR : 91pxxn-180203-mixed-pack/淘宝模特长靴短裤 -480P完整版.mp4: Failed to copy: failed to open source object: open file failed: googleapi: Error 403: The download quota for this file has been exceeded., downloadQuotaExceeded
2020/11/04 03:29:49 ERROR : 91pxxn-180203-mixed-pack/木秀林_酒店4p -720P高清完整版.mpg: Failed to copy: failed to open source object: open file failed: googleapi: Error 403: The download quota for this file has been exceeded., downloadQuotaExceeded
我们需要进一步的提取修正
提取基本的错误文件列表:
cat error.txt |cut -d':' -f4 > files.txt
然后从vps下载错误文件file.txt,使用记事本打开,将文件路径中的{}[]特殊字符转义,即直接全部替换添加转义符,演示为:
{
替换为{
以此类推
你应该会获得如下的txt文档列表:
91pxxn-180203-mixed-pack/木秀林_精品3P02 -1080P高清完整版.mp4
91pxxn-180203-mixed-pack/燃情美少女_夜店黑丝妹01 -720P高清完整版.mp4
91pxxn-180203-mixed-pack/木秀林_酒店4p -720P高清完整版.mpg
接下来就可以将所有403文件转存到临时盘查看备用,确认清单是否正确并成功拷贝备份完整。
gclone copy GdriveSA:{0AP9FI_z4bj-mUk9PVA}movies/M-team GdriveSA:{0AIZA9vF84-K2Uk9PVA}movies/M-team -v --stats 15s --transfers 16 --cache-chunk-size 20M --bwlimit 120M --max-size 100G --include-from "root/files.txt"
--drive-server-side-across-configs
无误后再将所有错误文件的源文件使用rclone delete 删除
gclone delete GdriveSA:{0AP9FI_z4bj-mUk9PVA}movies/M-team -v --stats 15s --transfers 16 --cache-chunk-size 20M --bwlimit 120M --max-size 100G --include-from "/root/files.txt"
再将提取转存的bug文件用server side copy拷回去,最后拷贝至OneDrive检测,应该全部都能正常下载拷贝了。
3.建议关闭Onedrive/Sharepoint的版本控制
- 我们先安装最新的SharePoint Online Management Shell→下载地址
- 首页登录我们的域:
Connect-SPOService -Url "https://omomoe-admin.sharepoint.com"
- 输入以下指令关闭版本控制:
Set-SPOTenant -EnableMinimumVersionRequirement $False
- 如有必要,你还可以设置OneDrive默认空间大小为25TB:
Set-SPOSite -Identity https://omomoe-my.sharepoint.com/personal/admin_omo_moe -StorageQuota 26214400
这个需要你有5个账号用满4.5tb空间后跟微软客服申请,方法参考:
【分享】如何将你的微软Onedrive网盘免费升级到25TB容量
- 世纪互联的登录地址参考:
Connect-SPOService -url https://XXXXX-admin.sharepoint.cn -Credential admin@xxxx.partner.onmschina.cn
- 这样我们就可以在网页端打开“无版本控制”选项了,访问方法如下:
- SharePoint的版本控制也是类似的,访问你的SharePoint,点击左下角经典网站页面,选择网站设置,找到版本控制或者存储标准,去删除不需要的文件历史版本,参考的设置地址和存储标准地址如下
https://omomoe.sharepoint.com/sites/SiteName/_layouts/15/settings.aspx
https://omomoe.sharepoint.com/sites/SiteName/_layouts/15/storman.aspx
- 如果你之前开启了历史版本功能,由于微软的快速md5验证的bug,会导致重复上传同个文件,多个历史版本占用大量的空间,微软的解决方案是让你全部下载完毕后关闭版本控制再上传一次
rclone 拷贝时 移除history versions相关参数 –onedrive-no-versions
相关讨论:
https://github.com/rclone/rclone/issues/4106
帖子里提到有shell脚本可以自行修改盘符配置进行文件历史版本清理:
onedrive-cleanup.sh
当然你还是有最后的方案:DMS-Shuttle 下载这个软件,获取正版授权或者下载绿色版,还是可以批量访问微软OneDrive api循环删除所有文件的历史版本的,不过不一定稳定,也不见得所有的历史版本能够删除成功。所以,如果以上方案都不适合你,最后的无奈之举,我个人觉得微软客服说的有道理,建议使用mover或者rclone拷贝到其他账号后,关闭版本控制,再拷贝回来
暂无评论内容