ilcpm
1
我在用goodsync整理备份文件到onedrive,有的文件本地和onedrive都有,而且我有两个onedrive……
出现过的一些意外是:
- 有个文件夹里的某些文件在onedrive网页上查看时,体积比本地的文件大(本地文件是onedrive客户端同步过来的),可是当我从网页手动下载到本地的时候又和本地的文件一样大了。也就是说可能onedrive错误的记录了这几个文件的大小……这是我在同步的时候goodsync报出来的冲突,不然我也注意不到
- 有一些照片对比显示两边的修改日期不一样,也是我以前手动上传到onedrive备份的,当我尝试让goodsync对比两边的校验码时,提示无法完成(详见下文)
所以现在需要一个这样的软件:在不把云端文件下载到本地的情况下,就能够对文件进行校验码判断,从而确认文件是否出现了损坏。
我目前看到支持和onedrive同步且支持校验码的软件就只有goodsync和WinDataReflector,后者我测试无法登录到onedrive……
而goodsync那个智障玩意当我勾上校验码的时候,提示说:
分析所有文件的校验和与储存的校验和进行比对,但是左侧校验和比较不能完成,因为校验和是不同类型(SHA1与MD5)
(左侧为onedrive,右侧为本地)
我觉得这个意思应该是说,onedrive提供的校验码是SHA1,但是右侧本地提供的校验码是MD5,也就是说goodsync对于本地文件只能计算MD5,没有办法计算SHA1来和云端onedrive提供的校验码比较,真的是服气……
这种情况下我估计其他通过“绕路”进行同步的方案全部都要凉,比如通过raidrive映射onedrive到网络文件夹,再用freesync进行同步的方案,这种情况下估计onedrive会被认为是本地文件,计算校验码的时候那不就得从头到尾下载一遍吗……
对于没办法的办法:“全部下载到本地然后校验,无非就是多点时间和流量”。
在我这里也行不通,因为我有两个onedrive,而我现在在重构这些文件的组织结构,所以文件夹的对应关系乱的不得了,没办法直接指定远程和本地的两个文件夹然后放那儿跑校验……
(我在试图把两个onedrive里的文件全部下载到本地,然后在本地进行整理,重构完目录结构之后重新上传备份。因为工程量太大,所以我只能分批把云端文件夹一个一个的下载到本地的新文件夹结构里,确认无误后删除云端文件夹,然后处理下一个。而onedrive那同步速度太慢了,如果传完一个文件夹然后又单独用上面raidrive的方案跑一遍校验,那我怕是两个月都没办法安生……)
ilcpm
2
或者换个更直白的问题,onedrive有没有直接提供文件的校验码呢?
我询问GPT得到的结论是模棱两可的,似乎有……而且和goodsync的提示是能对上的
(我试着去看GPT提供的网站,但是说实话,微软的文档真的很难读,找不到API的格式在哪里,试着翻了以下,应该是在这个网页里,但是里面没有hash这个词语)
icue
3
可以试一下 rclone 的 check 命令:
突然发现 rclone 有个中文站,所以把链接也贴出来:
如果解决不了,你可以去 rclone 社区寻求帮助,开发者在那里很活跃,我感觉全球有大把的人在用 rclone 往 OneDrive 同步,这样的问题他们肯定见过。
onedrive有没有直接提供文件的校验码呢?
根据 rclone 的文档,OneDrive 在 2023 年 7 月以后就把校验码从 SHA1 迁移到 QuickXorHash 了。微软的文档也提到:
quickXorHash is the only value that is guaranteed to be available for both OneDrive for Business and OneDriver Personal.
我在试图把两个onedrive里的文件全部下载到本地,然后在本地进行整理,重构完目录结构之后重新上传备份。
rclone 支持把云盘挂载到本地去读写,我感觉你的这个需求可以试试让 rclone 同时挂载你的两个 OneDrive,然后在本地的资源管理器里去整理。这样就不用先全下载下来了,但文件操作的速度肯定会慢一点(视网络环境和 rclone 的参数而定,这块我也一直没怎么研究明白)。
ilcpm
4
感谢回复,看起来rclone似乎是现在惟一的方案了,请问有没有可视化的客户端呢?
幸好我目前为止都只是进行了文件夹级别的重构,如果能够快速校验的话还是比较快的
ilcpm
5
另外onedrive居然会对云端文件进行病毒扫描,然后拒绝下载,这是我没想到的……这似乎也说明云端的网盘都不是一定靠谱的,总会有各种问题阻止文件被下载
还好这个文件不重要
icue
6
我没有在用可视化客户端,我印象里现有的可视化客户端都比较简陋。
但反过来,命令行的好处是问 GPT 很有用,把需求讲清楚以后,几乎总能得到正确的指令。
我看到你提到病毒扫描,想提一句,rclone 支持给网盘内容加密,可以有效杜绝这种情况,但弊端是下载就也依赖 rclone 了。
我之前用默认的–checksum测试rclone对于OneDrive校验,速度也比较慢,后面就改用size-only了
一般可以让GPT写个PowerShell脚本批量备份,后续修改的就少了
可以用rclone的crypt远端加密本地文件,然后只上传未解密的内容给OneDrive,日常使用解密到虚拟盘符
ilcpm
8
感谢回复,请问你和onedrive校验的时候rclone有把文件下载到本地再对比吗,还是只是对比速度比较慢
我问了一下gpt,看它的说法似乎rclone没办法在本地计算QuickXorHash,所以好像只能通过–download参数强行下载文件来对比了
如果是这样的话,那还是算了吧,文件太多了,懒得对比了
ilcpm
9
@icue @Azona77 感谢二位,用rclone确实可以在不下载文件的情况下完成对比
对比的时候本地硬盘读取速度几十M每秒,已经很快了,22G的文件1分钟出头校验完毕,这下就可以用goodsync进行可视化对比和同步,rclone来校验了,爽歪歪
使用的命令是
rclone.exe check onedrive:项目 H:/项目/ --verbose --log-file=项目.log
追加参数 --combined results.log
可以输出所有文件的对比结果,包括对比成功的文件
供需要的小伙伴参考
1 个赞