百度云网盘可以免费扩容到2T这么大的容量,放着也用不完。刚好之前在github找到一个linux用的百度上传脚本,而且当网站的大小不断增大,直接下载到自己的电脑会非常非常的慢,所以就尝试使用这个百度上传脚本+自动备份脚本实现自动备份。但是又怕数据直接打包在百度云网盘没有加密有风险,就又修改了一下脚本。
下面先介绍百度上传脚本的安装及使用方法:
百度上传脚本名称:bpcs_uploader
项目地址:https://github.com/oott123/bpcs_uploader
登录你的VPS下载安装bpcs_uploader,系统要求是你的Linux已安装php和curl。
- wget https://github.com/oott123/bpcs_uploader/zipball/master
- unzip master
- mv oott123-bpcs_uploader-3a75324 bpcs #重命名
- cd bpcs #进入目录
- chmod +x bpcs_uploader.php #设置权限
- php -d disable_functions -d safe_mode=Off -f bpcs_uploader.php #快速初始化
PS:从github下载的代码解压包的名称可能会有变动,如果你发现第三步的重命名出错,你查看一下你下载下来的解压名称是什么再重新解压。
按照提示输入“y”然后回车。
提示输入API,这里需要输入一个有PCS权限的API KEY,由于没有API直接按回车就行了(使用上图uFBSHEwWE6DD94SQx9z77vgG这个Key时),只能获取一个有效期为一个月的access token,每个月都要手动更新access token。
然后在自己的电脑打开http://openapi.baidu.com/device
输入上图红色方框的验证码,按继续
按“授权”
然后回到vps的ssh按回车
命令:
快速初始化:
- php -d disable_functions -d safe_mode=Off -f bpcs_uploader.php quickinit
查看网盘容量:
- php -d disable_functions -d safe_mode=Off -f bpcs_uploader.php quota
上传文件:
- php -d disable_functions -d safe_mode=Off -f bpcs_uploader.php upload [path_local] [path_remote]
例:
- php -d disable_functions -d safe_mode=Off -f bpcs_uploader.php upload /data/backup/risingsun_web.zip /risingsun/risingsun_web.zip
下载文件:
- php -d disable_functions -d safe_mode=Off -f bpcs_uploader.php download [path_local] [path_remote]
如果提示上传失败:
打开下面的链接然后授权:
最后重新初始化即可:
- php -d disable_functions -d safe_mode=Off -f bpcs_uploader.php quickinit
备份脚本:
由于网站数据直接打包上传到百度云网盘,万一网盘被盗那么数据就被别人拿走并可以直接使用(提醒大家最好将百度账号绑定好手机和邮箱,邮箱密码不要设置和百度账号一样,而且邮箱设置好安全问题。),我就想了想给数据加上密码。但是之前的备份脚本使用tar+gz打包压缩的,加密后的格式只能是des3,而windows系统下解密des3文件比较麻烦,从百度云上将数据下载下来难以解压,所以我就选用zip格式压缩数据。
经过我多次测试,zip压缩率大概是28%,gz压缩率大概是24%。
网站数据备份脚本:
- #!/bin/bash
- #你要修改的地方从这里开始
- MYSQL_USER=123 #mysql用户名
- MYSQL_PASS=abc #mysql密码
- WEB_DATA=/data/wwwroot #要备份的网站数据
- PassWord=123456789 #压缩密码
- #你要修改的地方从这里结束
- #定义数据库和网站名字
- DataBakName=data_$(date +"%Y%m%d_%H_00").zip
- WebBakName=web_$(date +%Y%m%d_%H_00).zip
- cd /data/backup
- #导出数据库,一个数据库一个压缩文件
- for db in `/usr/local/mysql/bin/mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs`; do
- (/usr/local/mysql/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS ${db} | gzip -9 - > ${db}.sql.gz)
- done
- #压缩数据库文件为一个文件
- zip -q -r -P $PassWord /data/backup/$DataBakName /data/backup/*.sql.gz
- rm -rf /data/backup/*.sql.gz
- #压缩网站数据
- zip -q -r -P $PassWord /data/backup/$WebBakName $WEB_DATA
- cd /data/backup
- mkdir $(date +"%Y%m%d_%H_00")
- mv data_$(date +"%Y%m%d_%H_00").zip $(date +"%Y%m%d_%H_00")
- mv web_$(date +%Y%m%d_%H_00).zip $(date +"%Y%m%d_%H_00")
- echo "备份成功,文件夹为:/data/backup/$(date +"%Y%m%d_%H_00")"
- #上传到百度云
- cd /root/bpcs
- php -d disable_functions -d safe_mode=Off -f bpcs_uploader.php upload /data/backup/$(date +"%Y%m%d_%H_00")/data_$(date +"%Y%m%d_%H_00").zip /$(date +"%Y%m%d_%H_00")/data_$(date +"%Y%m%d_%H_00").zip
- php -d disable_functions -d safe_mode=Off -f bpcs_uploader.php upload /data/backup/$(date +"%Y%m%d_%H_00")/web_$(date +%Y%m%d_%H_00).zip /$(date +"%Y%m%d_%H_00")/web_$(date +%Y%m%d_%H_00).zip
- echo "上传成功!"
将以上脚本修改为合适你的vps的配置,保存为autobackup.sh,然后上传至VPS的root目录下,并在/data目录下新建一个名为backup的文件夹。
然后给脚本权限,ssh下执行:
- chmod +x /root/autobackup.sh
接下来测试脚本能否正常工作,执行:
- ./autobackup.sh
如果能正常工作,再用cron实现每日自动运行这个脚本实现自动备份:
- crontab –e
添加备份任务,执行:
- 00 01 * * * /root/autobackup.sh
任务的运行时间可以自己设定,上面代码中的00 01,就是凌晨1点,尽量选择您网站访客最少的时间段,比如凌晨。