Loading...  ### 1.关于微软的onedriveAPI获取和授权: 进入 [Microsoft Azure 应用注册](https://portal.azure.com/)页面。点击新注册 名称随意,账户类型选择最后一个,重定向 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常见设置和报错解决 1. 拷贝到OneDrive报错size differ 这是一个已知的微软的问题,在上传办公文件(word,xls等)和html文档的时候,OneDrive会偷偷修改文件大小 解决方法:拷贝完毕其他文件后确认只剩这些因为size differ报错而无法拷贝的文件了,则添加下述指令 ``` --ignore-checksum --ignore-size ``` 忽略文件检查指令,强制拷贝。 来自 [[rclone.org](https://rclone.org/onedrive/#unexpected-file-size-hash-differences-on-sharepoint)] 2. 如果遇到提示abuse文件无法拷贝 请谷歌侧使用文件所有者账号拷贝,如果是团队盘,则使用管理员账号(SA群组则提升权限至管理员),并添加以下参数: ``` --drive-acknowledge-abuse ``` 拷贝被标记abuse违规文件,此参数依然不能拷贝病毒文件,也不能拷贝不是自己所有权的违规文件 3. 对于永久无法下载的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的版本控制 1. 我们先安装最新的SharePoint Online Management Shell→[下载地址](https://www.microsoft.com/zh-cn/download/details.aspx?id=35588) 2. 首页登录我们的域: ``` Connect-SPOService -Url "https://omomoe-admin.sharepoint.com" ``` 3. 输入以下指令关闭版本控制: ``` Set-SPOTenant -EnableMinimumVersionRequirement $False ``` 4. 如有必要,你还可以设置OneDrive默认空间大小为25TB: ``` Set-SPOSite -Identity https://omomoe-my.sharepoint.com/personal/admin_omo_moe -StorageQuota 26214400 ``` 这个需要你有5个账号用满4.5tb空间后跟微软客服申请,方法参考: <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="https://omo.moe/archives/550/" target="_blank" class="post_inser_a no-external-link"> <div class="inner-image bg" style="background-image: url(https://omo.moe/usr/uploads/2019/07/3584488714.jpg);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">【分享】如何将你的微软Onedrive网盘免费升级到25TB容量</p> <div class="inster-summary text-muted"> 众所周知,目前不被墙的国外网盘,也就微软的企业onedrive比较好用实惠放心了,那么相信大部分人从淘宝或者MJJ... </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> 5. 世纪互联的登录地址参考: ``` Connect-SPOService -url https://XXXXX-admin.sharepoint.cn -Credential admin@xxxx.partner.onmschina.cn ``` 6. 这样我们就可以在网页端打开“无版本控制”选项了,访问方法如下: <video src="https://omo.moe/usr/uploads/2020/11/667573162.mp4" style="background-image:url(http://);background-size: cover;"></video> 7. SharePoint的版本控制也是类似的,访问你的SharePoint,点击左下角经典网站页面,选择网站设置,找到版本控制或者存储标准,去删除不需要的文件历史版本,参考的设置地址和存储标准地址如下 ``` https://omomoe.sharepoint.com/sites/SiteName/_layouts/15/settings.aspx https://omomoe.sharepoint.com/sites/SiteName/_layouts/15/storman.aspx ``` 8. 如果你之前开启了历史版本功能,由于微软的快速md5验证的bug,会导致重复上传同个文件,多个历史版本占用大量的空间,微软的解决方案是让你全部下载完毕后关闭版本控制再上传一次 rclone 拷贝时 移除history versions相关参数 --onedrive-no-versions 相关讨论: https://github.com/rclone/rclone/issues/4106 帖子里提到有shell脚本可以自行修改盘符配置进行文件历史版本清理: [onedrive-cleanup.sh](https://omo.moe/usr/uploads/2020/11/771478668.txt) 当然你还是有最后的方案:DMS-Shuttle 下载这个软件,获取正版授权或者下载绿色版,还是可以批量访问微软OneDrive api循环删除所有文件的历史版本的,不过不一定稳定,也不见得所有的历史版本能够删除成功。所以,如果以上方案都不适合你,最后的无奈之举,我个人觉得微软客服说的有道理,建议使用mover或者rclone拷贝到其他账号后,关闭版本控制,再拷贝回来 Last modification:December 7th, 2020 at 06:00 pm © 允许规范转载 Support If you think my article is useful to you, please feel free to appreciate ×Close Appreciate the author Sweeping payments Pay by AliPay Pay by WeChat