在各大网盘都打样甚至删库跑路的情况下,百度云盘还是坚持下来确实不容易,其在国内同行业中的地位可见一斑。当然限速很严重,且如今新注册账户容量只有1T(银行卡验证后可免费升级2T)。不过这些问题都可以解决。对,所有可以用RMB解决的事情都不是事儿 。此外,一般网站(比如博客)数据一般都不大,压缩后就更小了。还有就是服务器后台自动加密打包,数据安全性亦可保障。介于以上原因,可选择百度云盘作为备份工具。
此方法备份数据 = Zip加密打包 + 文档结构及属性保持 + 自动化 - 需每月验证1次(待测试)
一、程序安装
1. zip、unzip安装
1、apt-get install zip 或 yum install zip
2、apt-get install unzip 或 yum install unzip
2. bpcs_uploader 安装
1、cd /root/
2、wget https://github.com/oott123/bpcs_uploader/archive/master.zip
3、unzip master.zip
4、cd /root/bpcs_uploader-master
5、chmod +x bpcs_uploader.php
6、php -d disable_functions -d safe_mode=Off -f bpcs_uploader.php quickinit
3. 百度认证
完成2步骤后,会在SSH里面出现这样一段文字:
...
Input gq5uvp9n as the user code if asked.
After granting access to the application, come back here and press Enter to continue.
复制上面文字中的:gq5uvp9n ,修改为以下链接(就是这部分...code=gq5uvp9n&...)。然后浏览器中打开链接:
http://openapi.baidu.com/device?code=gq5uvp9n&display=page&redirect_uri=&force_login=
点击确认后回到SSH,回车,随后出现:
Access Granted. Your Storage Status: 2054.73G/2056.00G (99.94%)
Enjoy!
即表示安装已经完成。输入:
php -d disable_functions -d safe_mode=Off -f bpcs_uploader.php quota
查询下容量。
二、 上传数据
1、shell脚本—数据库压缩及上传
#!/bin/bash
# 打印当前时间
echo `date +"%Y-%m-%d %H:%M:%S"`
# 数据库用户名和密码 要备份的数据库
MYSQL_USER="root"
MYSQL_PASS="12345678"
ZIP_PASS="12345678"
# 数据库临时备份目录
BACK_DIR="/root/bdbackup/mysql"
# 保存的名字
MYSQL_BACK_NAME=mysql_$(date +"%Y%m%d").zip
# 程序目录
bpcs_uploader="/root/bpcs_uploader-master/"
# 清空本地
rm -rf ${BACK_DIR}*
# 判断本地备份目录,不存在则创建
if [ ! -d $BACK_DIR ] ;
then
mkdir -p "$BACK_DIR"
fi
# 进入备份目录
cd $BACK_DIR
# 导出数据库,一个数据库一个压缩文件
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 $ZIP_PASS $MYSQL_BACK_NAME $BACK_DIR
# 上传到云盘
php -d disable_functions -d safe_mode=Off -f ${bpcs_uploader}bpcs_uploader.php upload $MYSQL_BACK_NAME $MYSQL_BACK_NAME
rm -rf ${BACK_DIR}*
echo "++++++++++++++++++ over ++++++++++++++++++++++++"
echo
exit 0
注:需要修改以下参数
1、数据库用户名: MYSQL_USER="root"
2、数据库密码:MYSQL_PASS="12345678"
3、压缩文件的压缩解压密码:ZIP_PASS="12345678"
2、脚本运行
在退出VI编辑器之前先验证脚本的文件格式,退出编辑模式后,输入:
::set ff?
回车后,若返回: unix,则表示没问题,反之,输入:
:set ff=unix
:wq后回到SSH命令界面,输入:
1、chmod +x /root/backup-sql.sh (假设脚本的位置在这里)
2、./root/backup-sql.sh
三、数据测试
回到网盘,进入:我的应用数据->bpcs_uploader。下载备份的数据,解压后得到类似“eonegh.com.sql.gz”这样的文件,登录到数据库后台,备份一遍数据库,再清空eonegh.com。然后导入eonegh.com.sql.gz。回到网站进一步测试数据的完整性。
四、补充说明
1、自动运行
将脚本添加到自动处理程序cron。
crontab -e
* 3 */3 * * /root/backup-sql.sh 2>&1 | tee -a /root/backup.log
推荐用VI编辑器,自动执行程序:每3天执行一次备份上传操作,且在第三天的本地凌晨3点执行。日志目录在:/root/backup.log。
2、每月验证
百度云盘的API上传操作需要每个月验证,待测试。
3、后期改进
根据测试效果,做后续更新。
4、shell脚本—文件压缩及上传
#!/bin/bash
# 打印当前时间
echo `date +"%Y-%m-%d %H:%M:%S"`
# zip压缩密码
ZIP_PASS="12345678"
# 网站目录
WEB_DIR="/www/wwwroot/eonegh.com"
WEB_DIR2="/www/wwwroot/nav.eonegh.com"
# 排除的目录,比如排除图片和附件目录
EXCLUDE_DIR="/www/wwwroot/eonegh.com/admin"
# 文件临时备份目录
BACK_DIR="/root/bdbackup/data"
# 保存的名字
WEB_BACK_NAME="eonegh.com_$(date +"%Y%m%d").tar.gz"
WEB_BACK_NAME2="nav.eonegh.com_$(date +"%Y%m%d").tar.gz"
BACK_NAME="web_$(date +"%Y%m%d").zip"
# 程序目录
bpcs_uploader="/root/bpcs/"
# 清空本地
rm -rf ${BACK_DIR}*
# 判断本地备份目录,不存在则创建
if [ ! -d $BACK_DIR ] ;
then
mkdir -p "$BACK_DIR"
fi
# 进入备份目录
cd $BACK_DIR
# 排除目录
for var in ${EXCLUDE_DIR[@]};do
temp="${temp} --exclude ${var} ";
done
# 单独压缩文件
tar -zcPf $WEB_BACK_NAME $WEB_DIR $temp
tar -zcPf $WEB_BACK_NAME2 $WEB_DIR2
# 压缩所有文件为一个文件,并加密
zip -q -r -P $ZIP_PASS $BACK_NAME $WEB_BACK_NAME $WEB_BACK_NAME2
# 上传到云盘
php -d disable_functions -d safe_mode=Off -f ${bpcs_uploader}bpcs_uploader.php upload $BACK_NAME $BACK_NAME
echo "++++++++++++++++++ over ++++++++++++++++++++++++"
echo
exit 0
五、参考文档
1、GitHub - 百度pcs上传脚本
2、Linux定时备份数据到百度云盘 - archoncap - 博客园
3、利用百度云盘进行网站备份 – 小松博客