定时自动备份vps数据到dropbox

2014年4月12日 | 标签: | 点击: 5498 次

1.创建Dropbox应用

首先,需要创建一个Dropbox应用,可以从该网址进行创建:https://www.dropbox.com/developers/apps/create

点击Create an app创建一个APP,填写相关信息之后,选择Full Dropbox之后点击Create创建。

2.下载并执行dropbox_uploader

下载地址:https://github.com/andreafabrizi/Dropbox-Uploader
下载之后上传至VPS的root目录。

然后,为该脚本添加执行权限:
# chmod +x dropbox_uploader.sh

执行该脚本:
# ./dropbox_uploader.sh

根据提示输入Dropbox应用中的App key和App secret,许可类型选择a,确认y,复制给出的权限验证链接到浏览器,确认后回到终端按任意键完成。

3、添加自动备份脚本

编写定时备份脚本,取名为backup.sh。其代码如下:

#!/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/$OldYM

cd $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"

上面可以根据自己的需求改编需要备份的目录,以及保留旧数据的时长(默认设置的是Dropbox保留30天,本地保留6天)。

接下来,为这个备份脚本增加执行权限:
# chmod +x backup.sh

4.设置定时任务

执行 crontab –e,添加:
00 05 * * * /root/bin/backup.sh

这样,就可以每天凌晨5:00自动备份到dropbox了。





目前还没有任何评论.

返回顶部