转载:VPS自动备份到Dropbox

转载自Pythoner

1.创建Dropbox应用

需要创建一个Dropbox应用,可以从该网址进行创建。

2.下载并执行dropbox_uploader.sh

dropbox_uploader是一个第三方Dropbox备份脚本,我们可以从这里获取到。

然后,为该脚本添加执行权限:

# chmod +x dropbox_uploader.sh

执行该脚本:

# ./dropbox_uploader.sh

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

其中,用户可以根据自己的需求改编需要备份的目录,以及保留旧数据的时长(比如我这里设置的是Dropbox保留7天,本地保留10天)。

接下来,为这个备份脚本增加执行权限:

# chmod +x backup.sh

3.编写备份脚本

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

MYSQL数据库帐号密码

MYSQL_USR="root"  # 数据库帐号

MYSQL_PWD="password"  # 数据库密码

定义需要备份的目录

NGINX_CONF_DIR=/usr/local/nginx/conf  # nginx配置目录

WEB_DIR=/home/wwwroot  # 网站数据存放目录

定义备份存放目录

DROPBOX_DIR=/$(date +%Y-%m-%d)  # Dropbox上的备份目录

LOCAL_BAK_DIR=/home/backup  # 本地备份文件存放目录

定义备份文件名称

DBBakName=DB_$(date +%Y%m%d).tar.gz

NginxConfBakName=NginxConf_$(date +%Y%m%d).tar.gz

WebBakName=Web_$(date +%Y%m%d).tar.gz

定义旧数据名称

Old_DROPBOX_DIR=/$(date -d -7day +%Y-%m-%d)

OldDBBakName=DB_$(date -d -10day +%Y%m%d).tar.gz

OldNginxConfBakName=NginxConf_$(date -d -10day +%Y%m%d).tar.gz

OldWebBakName=Web_$(date -d -10day +%Y%m%d).tar.gz



cd $LOCAL_BAK_DIR

使用命令导出SQL数据库,并且按数据库分个压缩

for db in `mysql -u$MYSQL_USR -p$MYSQL_PWD -B -N -e 'SHOW DATABASES' | xargs`; do

    (mysqldump -u$MYSQL_USR -p$MYSQL_PWD ${db} | gzip -9 - > ${db}.sql.gz)

done

压缩数据库文件合并为一个压缩文件

tar zcf $LOCAL_BAK_DIR/$DBBakName $LOCAL_BAK_DIR/*.sql.gz

rm -rf $LOCAL_BAK_DIR/*.sql.gz

压缩Nginx配置数据

cd $NGINX_CONF_DIR

tar zcf $LOCAL_BAK_DIR/$NginxConfBakName ./*

压缩网站数据

cd $WEB_DIR

tar zcf $LOCAL_BAK_DIR/$WebBakName ./*



cd /root/bin

开始上传

./dropbox_uploader.sh upload $LOCAL_BAK_DIR/$DBBakName $DROPBOX_DIR/$DBBakName

./dropbox_uploader.sh upload $LOCAL_BAK_DIR/$NginxConfBakName $DROPBOX_DIR/$NginxConfBakName

./dropbox_uploader.sh upload $LOCAL_BAK_DIR/$WebBakName $DROPBOX_DIR/$WebBakName


删除旧数据

rm -rf $LOCAL_BAK_DIR/$OldDBBakName $LOCAL_BAK_DIR/$OldNginxConfBakName $LOCAL_BAK_DIR/$OldWebBakName

./dropbox_uploader.sh delete $Old_DROPBOX_DIR/



echo -e "Backup Done!"

4.添加crontab

编辑 /root/bin/backup.sh 并写入以下内容。

#!/bin/bash

crontab –e

30 3 * * * /root/bin/backup.sh

这样,就可以每天凌晨3:30自动备份到Dropbox了。

你可能感兴趣的:(转载:VPS自动备份到Dropbox)