0x01 前言

网站数据就是我们站长的一切,数据的备份是每天都要做的事。我尝试通过FTP将数据备份到又拍云中,但又拍云并不支持sFTP,同时速度异常的慢。此后我又尝试将数据备份到家里的服务器,然后发现数据太大,家里服务器的空间不足。

然而我的百度盘却有超过3TB的空间,同时百度盘提供的API又支持HTTPS加密,那为什么不将数据备份到百度盘上呢?

不过要是网站备份数据过大,恐怕需要另寻备份途径或加大备份间隔了。

0x02 准备百度盘与脚本

首先你得需要有一个百度盘账号。

我使用由houtianze 编写的Python 程序bypy 来连接百度云,以下是Github 地址:

https://github.com/houtianze/bypy

通过以下命令配置bypy :

#安装python pip
yum install python-pip -y

#安装requests
pip install requests

#从Github 中复制文件
git clone https://github.com/houtianze/bypy.git

#进入bypy 文件夹
cd bypy/

#获取百度盘的api key
python bypy.py list

获取百度api key 并授权:

#如果文件夹~/bypy/ 没有存在配置文件,则会提示需要获取api key
python bypy.py list
Please visit:

#将此链接复制到浏览器打开
https://openapi.baidu.com/oauth/2.0/authorize?scope=basic+netdisk&redirect_uri=oob&response_type=code&client_id=q8WE4EpCsau1oS0

And authorize this app
Paste the Authorization Code here within 10 minutes.
Press [Enter] when you are done

#将从百度返还的api key 粘贴到shell 中并回车
7e45c0b2f25f4686aaf558

Authorizing, please be patient, it may take upto 60.0 seconds...
Authorizing/refreshing with the OpenShift server ...
Successfully authorized
/apps/bypy ($t $f $s $m $d):
D test_1 0 2016-05-21, 05:29:39 
D stet_2 0 2016-05-02, 02:19:41

0x03 同步

如果你能获取你云盘中的文件夹,则说明已经授权成功。现在尝试新建在百度盘中一个备份文件夹并将本地文件夹中的文件同步到百度盘:

#新建文件夹,该文件夹在 我的应用数据 >> bypy 目录下
python bypy.py mkdir test_3

#将本地文件夹backup/ 下的文件同步到百度盘
python bypy.py syncup test_3/ backup/

0x04 添加到定时任务

将上面命令的路径修改为你实际的路径,并将其添加到crontab 中即可。

30 3 * * * root python bypy.py syncup test_3/ backup/

0x05 结语

其实我有一个脚本,每天定时将网站文件、数据库dump 文件和其他需要备份的文件都存在一个临时文件夹中,并将这个文件夹通过zip 固实压缩加密。再将压缩文件存放在backup/ 文件夹里,随即删除临时文件夹并开始与百度盘同步。

而我的网站数据并不大,最大时也就2GB,都能在20分钟内传输完成。这将会占用你所有的带宽,如果你的文件很大,则需要分为多个压缩包进行传输以防影响你的业务。