loca1h0st's Blog
loca1h0st's Blog

百度网盘同步OneDrive操作

百度网盘同步OneDrive操作

warning 数据安全警告
数据无价,进行所有操作之前请先进行备份!

同步流程:找一台Windows的机器,安装百度网盘和RaiDrive,将百度网盘的下载目录直接指向OneDriver的本地挂载盘即可。

同理,RaiDrive支持的所有网盘均可以这么进行同步,比如DropBox,Google Driver等。

https://blog.mrtblogs.net/wp-content/uploads/2022/08/image-11-1024x362.png

我这次同步了近30G的零散文件和图片,发现有部分文件夹中存在有文件或图片下载失败的情况,失败后会在对应文件夹存在一个0KB大小的文件和一个大小正确但文件名后缀为.baiduyun.p.downloading的文件,但在百度云盘内查看文件下载是正常完成的。

具体情况可以参考这篇链接:https://blog.csdn.net/lxj362343/article/details/118631406

尝试对某一个照片打开进行验证:

https://blog.mrtblogs.net/wp-content/uploads/2022/08/image-12-1024x417.png

文件头正常为FFD8,文件尾为:FFD9,确认文件是正常下载完成的但百度云盘未能正确合并文件。

那一个一个去合并文件显然不是一个正确的选择,尝试用Python对所有下载的文件进行遍历,找到大小为0KB的文件,并用文件名+”.baiduyun.p.downloading”的文件去覆盖它:

import os

onedrive = "你的OneDrive同步文件夹"


def check_filesize(dir_path):
    all_files = os.listdir(dir_path)
    sub_dirs = []
    for file in all_files:
        if file.endswith("downloading"):
            continue
        full_path = dir_path + file
        if os.path.isfile(full_path):
            if os.path.getsize(full_path) == 0:
                if os.path.exists(full_path + ".baiduyun.p.downloading"):
                    os.remove(full_path)
                    os.rename(full_path + ".baiduyun.p.downloading", full_path)
                    print(full_path + " ===> ok")
                else:
                    print(full_path)
        else:
            sub_dirs.append(full_path + "/")
    for sub_dir in sub_dirs:
        check_filesize(sub_dir)


if __name__ == '__main__':
    check_filesize(onedrive)

发表回复

textsms
account_circle
email

loca1h0st's Blog

百度网盘同步OneDrive操作
warning 数据安全警告数据无价,进行所有操作之前请先进行备份! 同步流程:找一台Windows的机器,安装百度网盘和RaiDrive,将百度网盘的下载目录直接指向OneDriver的本地挂载盘即可。…
扫描二维码继续阅读
2022-08-15