VPS 自动备份网站数据到 Dropbox

分享·Hosts · 2016-12-20

数据备份是网站建设的一个重要环节,毕竟谁也不能保证自己的数据能不丢失,而一旦丢失,很有可能就恢复不了。所以经常备份自己的网站数据是非常必要的,下面来介绍一下如何在自己的VPS中自动、定时的进行数据备份。

一、申请Dropbox App

打开 Dropbox App 创建页面,按照申请步骤选择Dropbox API 、选择保存文件的目录、填写 App 应用名称。

vps-backup-dropbox_01

都填好后点击 Create app 创建App。
创建成功后会跳转到 App 设置页面,这时候点击 Generated access token ,将生成的字符串保存好。
vps-backup-dropbox_02

二、配置 Dropbox 上传脚本

打开Xshell 或 Putty 登陆VPS,下载 Dropbox 上传脚本
wget https://raw.github.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh

设置 dropbox_uploader.sh 脚本权限,并配置脚本。

chmod +x dropbox_uploader.sh
./dropbox_uploader.sh

执行脚本后会提示你输入 Access token ,将刚才在 Dropbox App 页面获取的字符串复制进来,回车。y,回车。

vps-backup-dropbox_03

配置信息保存成功后我们的VPS就绑定了App了。

三、配置网站备份脚本

新建一个网站备份脚本

vi backup.sh

将下面的脚本内容编辑好粘贴进去

#!/bin/bash
SCRIPT_DIR="/root" #这个改成你存放刚刚下载下来的dropbox_uploader.sh的文件夹位置
DROPBOX_DIR="/backup" #这个改成你的备份文件想要放在Dropbox下面的文件夹名称,如果不存在,脚本会自动创建
BACKUP_SRC="/home/wwwroot /usr/local/nginx/conf" #这个是你想要备份的本地VPS上的文件,不同的目录用空格分开
BACKUP_DST="/tmp" #这个是你暂时存放备份压缩文件的地方,一般用/tmp即可
MYSQL_SERVER="localhost" #这个是你mysql服务器的地址,一般填这个本地地址即可
MYSQL_USER="mysqluser" #这个是你mysql的用户名名称,比如root或admin之类的
MYSQL_PASS="password" #这个是你mysql用户的密码
# 下面的一般不用改了
NOW=$(date +"%Y.%m.%d")
DESTFILE="$BACKUP_DST/$NOW.tar.gz"
# 备份mysql数据库并和其它备份文件一起压缩成一个文件
mysqldump -u $MYSQL_USER -h $MYSQL_SERVER -p$MYSQL_PASS --all-databases > "$NOW-Databases.sql"
tar cfz "$DESTFILE" $BACKUP_SRC "$NOW-Databases.sql"
# 用脚本上传到dropbox
$SCRIPT_DIR/dropbox_uploader.sh upload "$DESTFILE" "$DROPBOX_DIR/$NOW.tar.gz"
# 删除本地的临时文件
rm -f "$NOW-Databases.sql"
rm -f "$DESTFILE"

赋予脚本权限

chmod +x backup.sh

备份的时候执行这个脚本就能保存到Dropbox了

./backup.sh

四、设置定时任务自动备份网站数据到Dropbox

crontab -e

粘贴以下代码,保存。

0 3 * * * /root/backup.sh

重启crond。这样以后每天3点都会自动将网站数据备份到Dropbox了。

/bin/systemctl restart  crond.service

其它

我现在就是使用此方法将这个 WordPress 博客数据备份到 Dropbox,如果你觉得麻烦,也可以使用其它方法,例如安装一些插件来达到此目的,但并不推荐,毕竟WordPress已经够臃肿了,插件装多了会对VPS增加一些不必要的负担。

当然,如果你使用 Vultr 的 VPS,可以免费使用 Snapshots 快照功能对整个VPS进行备份,更加简单、快速。

参考资料:

http://keenwon.com/449.html

http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.html

VPS 备份
Theme Jasmine by Kent Liao