利用 Dropbox API 把网站备份自动上传 Dropbox 网盘

更新时间:2018-10-06 分类:网络技术 浏览量:3507

无论使用哪里的主机,网站的数据备份都是需要考虑的问题,阿里云 ECS (推荐码:GO3K0C)主机有快照功能,可以回滚快照,但是,就算如此,我还是会对网站数据进行自动备份上传网盘。如此,才能够更放心网站的安全。今天就来分享如何利用 Dropbox API 自动备份网站,并且自动上传至 Dropbox 网盘,正好结合美国免备案 VPS 主机 C3-KVM 使用。(购买免备案 VPS 美国主机,点击这里 使用优惠码:imahui 可享受八折优惠)

DropBox 基于 Amazon S3 的云存储,保证了可靠性,免费注册存储空间有 2G 。点击这里 注册可以增加 500M 存储空间。将网站数据上传至 Dropbox 网盘,不仅不用担心数据丢失,也不用担心像国内某些网盘那样,突然停止提供服务。

如何上传文件至 Dropbox 网盘

第一步:注册 Dropbox 用户,然后访问 https://www.dropbox.com/developers/apps 登陆账户,点击 Create APP,在 Choose an API 中选择 Dropbox API。然后在 Choose the type of access you need 根据自已情况选择,建议选择 App folder 。(注:App folder - App 应用文件夹 / Full folder - 全文件夹),并且在 Name your app 下面输入 App 应用名称。可以随便取名,但是如果已经有存在的应用名称,则会失败。

利用 Dropbox API 把网站备份自动上传 Dropbox 网盘

第二步:创建成功后,点击进入应用,在 Settings 选项中,点击 Generated access token 下面的 Generate 按钮获取 token 并记住。(注意:一定要记得 token ,后面有需要用。)

第三步:下载 Dropbox-Uploader 脚本。Dropbox-Uploader 是一个第三方的脚本,并且它已经开源在了 Github。


wget https://raw.github.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh 
chmod +x dropbox_uploader.sh 
sh dropbox_uploader.sh

安装脚本时,提示需要输入 token 。把第二步中记下的 token 填写上去即可,回车之后,需要再次确认,输入 Y 再回车即可完成。

安装完成之后,可以通过输入 sh dropbox_uploader.sh -h 获取帮助。

分别有 Commands 和 Optional 说明。其中, Commands 中有 upload 和 download ,表示的是上传和下载。我们来测试一下下载,刚好已经将阿里云 ECS 网站数据上传至了 Dropbox 中。

输入 sh dropbox_uploader.sh download / /home/ 表示从应用文件夹根目录下载至本地 home 目录。

可以看到,已经在正常下载 Dropbox 网盘内的数据。如果想要上传,则输入 sh dropbox_uploader.sh upload /home/backup/ /backup 表示从本地 home 目录中的 backup 文件夹所有文件上传至应用文件夹的根目录。

既然已经可以通过第三方脚本上传和下载 Dropbox 文件,那么接下来需要设置网站的自动备份和上传文件了。

如何自动备份网站文件和数据

可以使用 LNMP 官方包 tools 目录中的备份脚本,也可以使用别的脚本。这里,我将张戈博客分享的脚本进行修改。

在系统根目录创建文件 backup.sh ,然后输入如下内容:


#!/bin/bash
#Author:ZhangGe
#Des:Backup database and webfile.
#Date:2014-8-28
TODAY=$(date +"%Y-%m-%d")

if [ -z $1 ];then
        echo Needed Usage arguments. Please Use --help to get more infomation.
        exit 1
fi

if [ "$1" == "db" ];then
        domain=$2
        dbname=$3
        mysqluser=$4
        mysqlpd=$5
        back_path=$6
        cd $back_path
        mysqldump -u$mysqluser -p$mysqlpd $dbname>$back_path/$domain\_db_$TODAY\.sql
        tar cvzf $back_path/$domain\_db_$TODAY\.tar.gz $domain\_db_$TODAY\.sql --remove-files

elif [ "$1" == "file" ];then
        domain=$2
        site_path=$3
        back_path=$4
        tar cvzf $back_path/$domain\_$TODAY\.tar.gz $site_path

elif [ "$1" == "--help" ];then
        clear
        echo =====================================Help infomation=========================================
        echo 1. Use For Backup database:
        echo The \$1 must be \[db\]
        echo \$2: \[domain\]
        echo \$3: \[dbname\]
        echo \$4: \[mysqluser\]
        echo \$5: \[mysqlpassword\]
        echo \$6: \[back_path\]
        echo
        echo For example:./backup.sh db zhangge.net zhangge_db zhangge 123456 /home/wwwbackup/zhangge.net
        echo
        echo 2. Use For Backup webfile:
        echo The \$1 must be [\file\]:
        echo \$2: \[domain\]
        echo \$3: \[site_path\]
        echo \$4: \[back_path\]
        echo
        echo For example:./backup.sh file zhangge.net /home/wwwroot/zhangge.net /home/wwwbackup/zhangge.net
        echo =====================================End of Hlep==============================================
        exit 0
else
        echo "Error!Please Usage --help to get help infomation!"
        exit 2
fi

然后,改变文件权限,在终端输入 chmod +x backup.sh 即可。

把自动备份加入至定时计划中 在终端输入 crontab -e 打开定时计划进行编辑


00 01 * * * /root/backup.sh db wpgeek.cn wpgeek  root 123456 /home/backup >/dev/null 2>&1
30 01 * * * /root/backup.sh file wpgeek.cn /home/wwwroot/wpgeek.cn /home/backup >/dev/null 2>&1

保存退出,即可自动备份网站数据和文件。

如何把网站备份文件自动上传至 Dropbox 网盘

现在已经可以自动备份网站,也可以上传文件至 Dropbox 网盘。但是要自动上传备份文件,还需要创建脚本和设置定时计划。

同样,在根目录创建脚本 auto_upload_dropbox.sh 并输入以下内容


#!/bin/bash 
DROPBOX_DIR=/$(date +%Y-%m-%d) # Dropbox App 应用根目下自动创建日期文件夹
UPLOAD_DIR=/home/backup/ # 网站备份文件目录
# 定义备份7天以上文件名
THREE_DAY_CODE=wpgeek.cn_$(date -d -7day +"%Y-%m-%d").tar.gz
THREE_DAY_DATA=wpgeek.cn_db_$(date -d -7day +"%Y-%m-%d").tar.gz
# Dropbox 里 30 天以上的旧数据可以清除 
Old_DROPBOX_DIR=/$(date -d -30day +%Y-%m-%d) 
# 清理本地保存了 7 天的备份 
echo -ne "Delete local data of 7 days old..." 
rm -rf $UPLOAD_DIR/$THREE_DAY_CODE $UPLOAD_DIR/$THREE_DAY_DATA
echo -e "Done" 
# 开始上传到 Dropbox 
echo -e "Start uploading..." 
./dropbox_uploader.sh upload  $UPLOAD_DIR $DROPBOX_DIR
# 清理 Dropbox 里 30 天前的旧数据 
./dropbox_uploader.sh delete $Old_DROPBOX_DIR
echo -e "Thank you! All done." 

同样,需要改变文件权限,在终端输入 chmod +x auto_upload_dropbox.sh

最后,把自动上传脚本设置定时计划即可。


00 03 * * * /root/auto_upload_dropbox.sh

则每天凌晨三点开始进行上传数据。

到此,利用 Dropbox API 把网站备份自动上传 Dropbox 网盘完成了。最后,点击这里注册可以获得 500M 存储空间,不要错过!

参考资料:自动备份网站并同步到 Dropbox 作者:曾曦