自动备份数据到百度云上

  |   0 评论   |   1,619 浏览

bpcs_uploader

百度pcs上传脚本

系统要求

Linux (or cygwin) with php & curl installed. (这个一定要记得看看curl有没有安装 ,php也必须要安装,最开始我就是没有安装上curl工具)

使用方法

chmod +x bpcs_uploader.php
./bpcs_uploader.php
由于VPS上安装的php可能存在于各种地方,因此运行很可能不正常。请以使用which php得到你的php绝对路径,修改bpcs_uploader.php的头一句#!后的路径。 如果你的php是为了网站环境安装的,那么很有可能你会得到下面这条错误消息:
xxx() has been disabled for security reasons
那么说明你的环境由于安全原因禁止了部分函数的执行。请看FAQs的1。请使用那条长长的命令代替./bpcs_uploader.php。eg:php -d disable_functions -d safe_mode=Off -f bpcs_uploader.php quota

快速初始化(这一步如果成功了, 下面的初始化什么的步骤的都不需要做了,直接就能使用脚本上传文件了)

./bpcs_uploader.php quickinit
敲下命令直接进入快速初始化流程,输入y,然后打开浏览器访问 https://openapi.baidu.com/device ,在“请输入设备上显示的用户授权码:”文本框中输入上面显示的授权码(这里是 “12abcxyz”) 在命令行界面找到自己的授权码填入到浏览器中的输入框中,并点击继续。 看到网页上显示“请返回设备继续操作!”后,返回ssh上按下回车后,即完成了初始化配置。

初始化

./bpcs_uploader.php init
敲下命令之后会进入初始化流程,这里分段详述设置方法。
Uploader initialization will be begin. If you have already configured the uploader before, your old settings will be overwritten. Continue? [y/N] y
确认初始化。如果之前有初始化过,那么以前的配置将会被覆盖。
Please enter your PSC App API Key. You can get this key by visiting http://developer.baidu.com/dev#/create If you have already created an app, you can visit http://developer.baidu.com/console#/app and get it in your app's info. If you don't want to bother creating an app, you can press Enter to use the demo API Key. Doing so (without your own API Key/Secret) will cause the access-token to expire every 30 days, and you'll have to re-initialize when it expires. App API KEY [uFBSHEwWE6DD94SQx9z77vgG] :
第一步,输入App key。这里需要输入一个有PCS权限的API KEY,如果没有的话直接敲回车就好了,这里会默认使用内置的一组app key,app secret和app folder name,所以只要敲下回车就能直接跳到第四步。如果你没有App secret(例如使用L6g70tBRRIXLsY0Z3HwKqlRE这个Key时),只能获取一个有效期为一个月的access token。如果有一个有PSC权限的API KEY和secret,那么就能获得一个有效期为10年的refresh token,以便长期使用。
App API Key has been set to uFBSHEwWE6DD94SQx9z77vgG . Please enter your Baidu PSC App API Secret. If you have no idea what it is, keep it blank. App API SECRET [] :
第二步,输入App secret。如果输入了app secret,将会转到device code模式验证;或者直接输入回车使用oob模式验证。先直接回车:
Please enter your app's folder name. You can choose to input this later in the file [ /root/bpcsfiles_/config/appname ]. Why do I have to enter the app's folder name? Please check the FAQs. If your app's name has Chinese characters, please ensure that your client supports UTF-8 encoding. Below are some Chinese characters for testing. Please make sure that you can read them before you enter Chinese here. 这里是一些中文字符。 If you can't read the characters above, please press Enter and change it manually within the file [ /root/bpcsfiles_/config/appname ]. If you have Enter the key L6g70tBRRIXLsY0Z3HwKqlRE , just press Enter. App Name [pcstest_oauth] :
第三步,这里需要输入app folder name,也就是你申请API时填写的文件夹名字。详情见FAQ 2。因为是使用的默认的key,所以直接回车即可。
In the next step, you'll have to grab the access_token generated by Baidu. You can check out this link for more information on this procedure: http://developer.baidu.com/wiki/index.php?title=docs/pcs/guide/usage_example

Easy Guide:
1. Visit https://openapi.baidu.com/oauth/2.0/authorize?response_type=token&clientid=$appkey&redirecturi=oob&scope=netdisk
2. After the page is being redirected (it should show something like OAuth 2.0), copy the current URL to your favorite text editor.
3. Grab the accesstoken part, take only the part between “accesstoken=” and the next “&” symbol (without quotes).
4. Copy it and paste here, then press Enter.
access_token[] :


第四步,获取access token。在浏览器中打开上述URL( https://openapi.baidu.com/oauth/2.0/authorize?response_type=token&clientid=L6g70tBRRIXLsY0Z3HwKqlRE&redirecturi=oob&scope=netdisk ),进行授权。 授权完毕后,将会跳到一个写着“百度 Oauth2.0”的页面。复制出其中的网页URL,找到access_token=和&之间的字符串,例如: 3.05c2ea85d52c2a5.2592000.1369032.3089166538-2347 将其复制到shell中粘贴并回车。使用这种方式初始化的用户,需要每月重新初始化。

如果第三步输入app secret的时候没有留空,将会得到下面的消息:

Launch your favorite web browser and visit https://openapi.baidu.com/device Input 12abcxyz as the user code if asked. After granting access to the application, come back here and press Enter to continue.
来到这里,打开浏览器访问 https://openapi.baidu.com/device ,在“请输入设备上显示的用户授权码:”文本框中输入上面显示的授权码(这里是12abcxyz),并点击继续。 看到网页上显示“请返回设备继续操作!”后,返回ssh上按下回车后,即可继续。
curl -X GET -k -L "...." % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 62 0 62 0 0 40 0 --:--:-- 0:00:01 --:--:-- 235 Access Granted. Your Storage Status: 0.06G/115.00G (0.05%) Enjoy!
你所看到的输出可能和这里给出的不一样,但是只要看到了存储空间的剩余量,和【Have fun !】提示,即说明成功初始化。

查询容量(配额)

./bpcs_uploader.php quota
结果:
Your Storage Status : 0.06G/115.00G (0.05%)

上传文件

./bpcs_uploader.php upload [path_local] [path_remote]
路径格式:foo/bar/file.ext(路径中一定要包括文件名) 上传后,能在百度网盘/我的应用数据/应用名/foo/bar下找到一个叫file.ext的文件。

举个栗子:

/var/www/html/bpcs_uploader.php upload /home/sily/bak/mysqldata/mysql.sql  mysqlbak/mysql.sql

这个是我自动上传的mysql数据库备份的脚本命令

下载文件

./bpcs_uploader.php download [path_local] [path_remote]

删除文件

./bpcs_uploader.php delete [path_remote]

离线下载

./bpcs_uploader.php fetch [path_remote] [path_to_fetch]
注:离线下载已经可以正常使用。

FAQs

  1. 各种错误提示
试试php -d disable_functions -d safe_mode=Off -f bpcs_uploader.php
  1. 为什么要输入文件夹名?
因为百度PCS的权限被限制在了/apps/文件夹名/下。如果发现输入文件夹名后仍然无法上传文件,请通过网页版找到【我的应用数据】找到对应的文件夹名,写入/config/appname文件。上传文件的时候会自动帮您处理文件夹,无需手动写出完整路径。

缺点:

1.授权时间有限,可能只能用一个月, 一个月后需要重新授权

 

自动备份, 我使用的是crontab的功能,执行脚本命令,如下:

 

QQ图片20141129145814

最后一个就是我上传百度云的脚本,已经测试,是没有问题的

原文链接:http://oott123.github.io/bpcs_uploader/

 

评论

发表评论

validate