vps使用也有很久了,一直懒得弄这个备份,都是直接丢VPS上。虽然之前经历过一次VPS损坏,但依然没有提起足够的防范。正好今天动手,弄个脚本,把站自动备份到dropbox上,真的很方便。
首先,你得有一个dropbox的账号,直接去申请一个就好,申请地址:https://db.tt/ZIcuAxel
其实,备份到dropbox上有两种方法,一种是使用dropbox自己的linux客户端,一种是使用第三方的备份脚本,这里黑色自由选用的是第三方的脚本,因为这个更省资源,直接添加脚本就可以搞定。
附上dropbox自己的客户端地址和下载方法:
32位:
wget -O dropbox.tar.gz http://www.dropbox.com/download?plat=lnx.x86
64位:
wget -O dropbox.tar.gz http://www.dropbox.com/download?plat=lnx.x86_64
使用方法就不介绍了,直接运行就知道了。本文介绍第二种使用第三方脚本的。
下载dropbox_uploader:
https://github.com/andreafabrizi/Dropbox-Uploader
弄到vps上后直接:chmod 700
然后:./dropbox_uploader
会给你一个地址,复制到浏览器中打开,并且登陆你的dropbox(这一步需要翻墙登陆dropbox),
然后获取你的app key和app secret,填进去,就OK了。
接下来就是在dropbox上创建API,根据提示选择dropbox API,限制一下只在API目录下读写。其它就按照自己习惯选择个目录就好。
最后dropbox_uploader会给个地址,弄到浏览器里打开,dropbox提示绑定完成,就大功告成一半了。
剩下的就是备份脚本了,黑色自由自己的就不公开了,公开个网上的吧:
#!/bin/bash
DROPBOX_DIR=”/backup/$(date +%Y-%m-%d)” #Dropbox上的备份目录
MYSQL_USER=”root” #数据库帐号
MYSQL_PASS=”123456″ #数据库密码
YM_DATA=/etc/nginx #nginx配置目录
BACK_DATA=/home/backup #本地备份文件存放目录,手动创建
DATA=/home/www #网站数据存放目录#定义数据库的名字和旧数据库的名字
DataBakName=Data_$(date +”%Y%m%d”).tar.gz
WebBakName=Web_$(date +%Y%m%d).tar.gz
YMName=YM_$(date +%Y%m%d).tar.gz
OldData=Data_$(date -d -6day +”%Y%m%d”).tar.gz
OldWeb=Web_$(date -d -6day +”%Y%m%d”).tar.gz
OldYM=YM_$(date -d -6day +”%Y%m%d”).tar.gz#定义Dropbox旧数据的名字(30天前)
Old_DROPBOX_DIR=/backup/$(date -d -30day +%Y-%m-%d) #Dropbox上的备份目录#删除本地6天前的数据
rm -rf $BACK_DATA/$OldData $BACK_DATA/$OldWeb $BACK_DATA/$OldYMcd $BACK_DATA
#使用命令导出SQL数据库,并且按数据库分个压缩
for db in `mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e ‘SHOW DATABASES’ | xargs`; do
(mysqldump -u$MYSQL_USER -p$MYSQL_PASS ${db} | gzip -9 – > ${db}.sql.gz)
done
#压缩数据库文件合并为一个压缩文件
tar zcf $BACK_DATA/$DataBakName $BACK_DATA/*.sql.gz
rm -rf $BACK_DATA/*.sql.gz#压缩网站数据
cd $DATA
tar zcf $BACK_DATA/$WebBakName ./*#压缩域名配置数据
cd $YM_DATA
tar zcf $BACK_DATA/$YMName ./*cd ~
#开始上传
./dropbox_uploader.sh upload $BACK_DATA/$DataBakName $DROPBOX_DIR/$DataBakName
./dropbox_uploader.sh upload $BACK_DATA/$WebBakName $DROPBOX_DIR/$WebBakName
./dropbox_uploader.sh upload $BACK_DATA/$YMName $DROPBOX_DIR/$YMName#开始删除远程30天前的文件
./dropbox_uploader.sh delete $Old_DROPBOX_DIR/echo -e “Thank you! all down”
按自己vps具体配置修改下账号建个目录就差不多了,最后就是cron执行了。
crontab -e
按需求设定备份时间,OK,大功告成!