Home > 新手教程 > 使用定时脚本自动备份VPS数据到Dropbox

使用定时脚本自动备份VPS数据到Dropbox

各位好久不见了,大叔近半年多遇到了很多事情,所以很久没更新了,实在对不住大家,今天趁着有空,抓紧时间更一篇。

大叔记得去年写过一篇《WordPress备份插件:用BackWPup自动备份到Dropbox》,但BackWPup是Wordpress的插件,非Wordpress用户就没法用。而且Wordpress本来体积就很大了,使用太多的插件会影响其速度,能少用一个就少用一个。如果你是VPS用户或者对主机有Root权限,其实是可以使用脚本来实现BackWPup插件备份到Dropbox的功能。

一、登录Dropbox并创建一个APP

如果你还没有注册Dropbox,可以通过这个地址注册:https://www.9host.org/go_dropbox
登录之后,通过这个地址:https://www.dropbox.com/developers/apps
点击Create an app创建一个APP,填写相关信息之后,选择Full Dropbox之后点击Create创建。

二、下载Dropbox-Uploader

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

三、赋予执行权限并绑定Dropbox APP

用SSH执行,建议使用Xshell。
赋予Dropbox-Uploader.sh执行权限

chmod +x dropbox_uploader.sh

然后绑定APP

./dropbox_uploader.sh info

按提示分别输入App key和App secret,然后输入 Y 确认;
之后会出现如下画面:
dropbox
复制图中的链接在浏览器中打开(可能需要翻墙)并点击Allow绑定APP,然后回到Xshell按Enter。
之后可以执行下面的命令测试上传,提示Done就是绑定成功了。

./dropbox_uploader.sh upload /etc/passwd /backup/passwd.old


四、添加自动备份脚本

在Xshell中执行:

vi backup.sh

按 i 进入编辑模式
适当修改以下内容后,复制粘贴进去

#!/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"

ESC键退出编辑模式,
输入:wq
然后按Enter保存并退出。

五、赋予脚本权限

在Xshell执行

chmod +x backup.sh


六、设置定时任务

执行

crontab -e

在最后加入

00 03 * * * /root/backup.sh

表示每天凌晨三点执行备份脚本。
如果你的VPS是nano编辑器(最上有nano字样),加入之后按Ctrl+O或F3并按Enter保存,然后按Ctrl+X或F2退出;
另一种是vi编辑器,需要先按i键进入编辑模式,在末尾输入上面的命令之后,按ESC键,输入:wq ,再按Enter保存并退出即可。

七、最后重启Crontab

service cron restart

重启之后就设置完成了……
如果你不知道服务器当前时间,可以使用下面的命令;
查看当前时间:

date -R

修改当前时区:

cp /usr/share/zoneinfo/主时区/次时区 /etc/localtime

例如:

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

即修改服务器时区为上海。

声明:文章仅为分享信息,绝对不是推荐,所有内容均仅代表个人观点,读者购买风险自担。本文由【 河马大叔 】原创编译。转载务必注明 | 《使用定时脚本自动备份VPS数据到Dropbox》出处。
注意:河马大叔有义务保证您的个人信息不经由就爱主机透露给任何第三方,所以任何虚假邮箱的评论将不做回应,直接放入垃圾评论区域。

关于 河马大叔

热爱生活,热爱分享美国虚拟主机,域名,VPS等优惠信息和建站经验,且梦想成为富二代の爹的河马大叔。

1 条评论

  1. 感谢分享。

Paoniuman 评论 取消评论

您的电子邮件地址将会被严格保密,绝对不会泄露。

*

此站点使用 Akismet 来减少垃圾评论。了解我们如何处理您的评论数据

Scroll To Top