Linux自动化备份--上传到百度网盘

今天将网站移植到另外的一台服务器上,因为不是自己管理的网络,不能便捷的直接操作ssh界面。所以想办法实现自动化脚本备份。

想法:

利用shell脚本将网站及数据库备份到本地,然后将备份文件上传到邮箱或者网盘。

一开始测试的是邮箱的方式,但是邮箱使用的是网易的,有附件上传限制,所以没有成功。后来想到自己架设邮件服务器,找来找去没有找到合适的,而且要自己架设邮件服务器,那投资将会扩大,不值当的。最后无意中在网上查到百度的API,PCS可以实现直接对网盘文件进行读写操作,当即在网上查找是否有相关的成品脚本。相当幸运的是找到了,但是不幸运的是:好像百度将此功能的审核给关闭了。不过脚本里面有默认的demo API KEY,虽然说是可以使用十天,但是本人没有测试。不知道具体情况,只能测试一段了。

废话不多说,下面上过程:

一、利用bpcs_uploader完成网盘的读写操作:

Bpcs_uploader下载地址:http://oott123.github.com/bpcs_uploader/

使用Bpcs需要安装php和curl。

1. 将文件下载解压后放到/usr/local/下,并更名为pcs。(这个随意)

2.执行bpcs_uploader.php脚本

chmod +x bpcs_uploader.php
./bpcs_uploader.php

3.因为php可能安装于各种目录,所以运行可能不正常。如果不正常查找一下php所在的位置,修改bpcs_uploader.php的头一句#!后的路径。

4.执行命令之后进入初始化流程

[root@wlzs pcs]# ./bpcs_uploader.php init
===========================Baidu PCS Uploader===========================
Usage: ./bpcs_uploader.php init|quickinit|quota
Usage: ./bpcs_uploader.php upload|download path_local path_remote
Usage: ./bpcs_uploader.php delete path_remote
Usage: ./bpcs_uploader.php uploadbig path_local path_remote [slice_size(default:1073741824)] [temp_dir(def:/tmp/)]
Usage: ./bpcs_uploader.php fetch path_remote path_to_fetch
========================================================================
Uploader initialization will be begin. If you have already configured the uploader before, your old settings will be overwritten.
Continue? [y/N] y

5.确证初始化.如果之前有初始化过,那么之前的配置将会被覆盖.

 

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] :

6.这里需要输入一个有PCS权限的API KEY,如果没有的话直接敲回车就好了,这里会默认使用百度提供的一个demo API KEY。

7.不过,由于百度没有公开app secret,所以只能获取一个有效期为一个月的access token。如果有一个有PSC权限的API KEY和secret,那么就能获得一个有效期为10年的refresh token,以便长期使用。

App API Key has been set to uFBSHEwWE6DD94SQx9z77vgG . 
Demo key detected. Using default API Secret.
Demo key detected. Using default app name.
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
171   263    0   263    0    80   1253    381 --:--:-- --:--:-- --:--:--  4255
Launch your favorite web browser and visit https://openapi.baidu.com/device
Input sjh2qtcs as the user code if asked.
After granting access to the application, come back here and press Enter to continue.

8.这里将会通过网页进行授权验证.将上面的网址(即红色标注的地方)用网页打开输入的用户码(即蓝色标注的地方)进行验证即可

image49

9.完成之后,回到ssh控制台,按回车键即可。

 % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
180   398    0   398    0   143   1560    560 --:--:-- --:--:-- --:--:--  3805
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0    68    0    68    0     0    350      0 --:--:-- --:--:-- --:--:--   894
Access Granted. Your Storage Status: 2809.27G/3287.29G (85.46%)
Enjoy!

10.这样就和网盘连接成功了,下面是具体的一些命令

 

./bpcs_uploader.php quota 
查询容量
 ./bpcs_uploader.php upload [path_local] [path_remote] 
上传文件
./bpcs_uploader.php download [path_local] [path_remote]
下载文件
./bpcs_uploader.php delete [path_remote]
删除文件

二、利用脚本实现自动化备份上传

1、我先写了两个可以用到的简单脚本实现上传和查询两个简单的功能。存放在/usr/local/sbin文件夹里面

wppe脚本

#!/bin/bash
php /usr/local/pcs/bpcs_uploader.php quota
#利用shell实现查询磁盘配额

wpsc脚本

#!/bin/bash
php /usr/local/pcs/bpcs_uploader.php upload $1 $2
#实现文件上传

2、自动化备份脚本

 

#!/bin/bash
PATH=/usr/bin:/bin:/sbin:/usr/local/sbin:/usr/local/bin
#因为使用crontab时,默认使用的shell只有/usr/bin,其他使用到的PATH没有,所以会出现脚本中命令找不到的情况。
LANG=zh_CN.UTF-8
#默认的语言环境为en_CN.UTF-8,要想实现中文方式就加上这一句。
date=`date +%Y-%m-%d-%H-%M`
#备份目录
backupdir=/backup
#网站目录
webdir=/var/www/html/
#数据库名
dbname=bbs
dbname1=blog
#数据库用户名
dbuser=root
#数据库密码
dbpwd=root
#命令
#判断备份文件夹是否存在,存在删掉 不存在建立
if [ -d "$backupdir" ]; then
        rm -rf $backupdir
        mkdir -p $backupdir
else
        mkdir -p $backupdir
fi
#备份数据库
mysqldump -u$dbuser -p$dbpwd -B -F --single-transaction $dbname>$webdir/$dbname-$date.sql
mysqldump -u$dbuser -p$dbpwd -B -F --single-transaction $dbname1>$webdir/$dbname1-$date.sql
#关闭httpd服务
service httpd stop
#备份网站源文件
cd $webdir
tar -czf $backupdir/wlzs.cn-$date.tar.gz *
rm -rf $webdir/$dbname-$date.sql $webdir/$dbname1-$date.sql
#开启httpd服务
service httpd start
wpsc $backupdir/wlzs.cn-$date.tar.gz wlzs.cn-$date.tar.gz
 echo -e "`date`    ...................  备份完成 \n">>~/a.log

 

 

 

 

二〇一四年十二月二十日 12:09:39

THE END