前言
前两天D盘炸了,数据没了,要考虑一下数据备份才行,毕竟搞不好什么时候数据就没了
准备python
最新版即可,自行下载 (bypy支持Python 2.7+, 3.3+)
安装bypy
bypy是百度云的一个python客户端,可以直接用指令实现文件上传与下载(题外话,你甚至可以用来挂下载,不过慢的离谱
pip install bypy
可以用 python -m bypy 验证是否安装完成
安装完成后,进行百度账号的授权,将权限赋予bypy客户端
授权bypy
可以继续用cmd打开python,运行一下两个指令
>> from bypy import ByPy
>> bp=ByPy()
会跳出来一段文本,里面有一个连接,点击进入

复制出授权码,然后粘贴到命令框

看到这个提示,说明授权成功了
同时,在你的百度云里面,会多出来一个文件夹

(“apps”在百度云的根目录里显示是“我的应用数据”)
所有bypy上传的文件都会在这个目录里面,因为权限问题,bypy只能操作这个目录之下的文件
但是对于我们备份文件而言,完全足够
编写py脚本
github上给出的基本是命令行指令,python里面作为包调用的指令基本没人提到,我也没找到具体的说明文档
houtianze/bypy: Python client for Baidu Yun (Personal Cloud Storage) 百度云/百度网盘Python客户端 (github.com)
不过基本的编辑器里面调用了包之后都会提示函数的使用,各位自行研究吧
这里列几个命令行指令
bypy list
显示在云盘文件列表bypy syncup
或者bypy upload
把当前目录同步到云盘bypy syncdown --downloader aria2
或者bypy downdir / --downloader aria2
把云盘内容同步到本地来,这个命令不好用,要在后面加 –downloader aria2,要不没有速度bypy compare
比较本地当前目录和云盘目录bypy downfile 下载文件名
下载文件bypy upload 文件名
上传文件bypy mkdir tmp/bypy
在远端创建文件夹tmp- 运行时添加
-v
参数,会显示进度详情。 - 运行时添加
-d
,会显示一些调试信息。
然后下面是我自用的脚本
import sys, time
from bypy import ByPy
log_file = open(time.strftime("%Y{0}%m{0}%d{0}%H{0}%M{0}%S".format('_'), time.localtime(time.time())) + '.log', 'w')
sys.stdout = log_file
sys.stderr = log_file
bp=ByPy()
bp.list()
bp.upload("D:\xxx","/xxx") #这里格式注意,前一个元素是本地路径,使用'\';后面是云端路径,使用'/'
log_file.close()
很简洁,bypy都封装好了,上传就是个upload指令,没啥花样
我加了输出日志的功能,你测试的时候就会看到,有一堆信息和日志
比如有时候会上传文件和本地的md5不匹配(默认自动测试本地与云端文件的MD5是否匹配)
出于保险,还是留个日志
自动化
Windows有个“任务计划程序”,就类似Linux的crontab,可以计划性启动脚本

我们点击“创建基本任务”

名称啥的随意填

触发按照你的需要,比如每天备份,或者每周备份,都可以
操作选“启动程序”,毕竟我们是脚本程序

重点来了!!!
我测试下来,稳定运行要先创建一个bat文件
python ./AutoByPy.py
里面很简单,就是调用python运行我们写好的py脚本
然后我们的自动化是要启动这个bat脚本,再由这个bat运行我们的py脚本
绕了个弯
有写直接调用python运行py脚本的,不过我测试之后运行失败,当然你们可以试试
我这里还是用bat运行,对于bat脚本:

这两个位置必填,必填,必填,重要事情说三遍
第一个是bat文件,不用说,肯定要的,而“起始于”这一项要填写该bat文件的路径
比如“程序或脚本”是:D:\文档\personal\备份\AutoByPy\AutoByPy.bat
“起始于”就要填写:D:\文档\personal\备份\AutoByPy\
结束
这样配置下来,就可以让电脑自动备份数据到百度云里了