本文所讲内容为如何将网站上的文件以及数据库中的内容定时自动备份到Dropbox上。
1.创建Dropbox应用
首先,需要创建一个Dropbox应用(Dropbox目前需要翻墙),可以从该网址进行创建:https://www.dropbox.com/developers/apps/create。
在这里,应用类型选择Dropbox API App,数据存储类型选择Files and datastores,权限选择Yes(应用只需要访问它创建的文件)。然后命名创建。
2.下载并执行dropbox_uploader.sh
dropbox_uploader 是一个第三方Dropbox备份脚本,首先下载脚本:
curl "https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o dropbox_uploader.sh
然后,为该脚本添加执行权限:
# chmod +x dropbox_uploader.sh
执行该脚本,绑定APP:
# ./dropbox_uploader.sh
根据提示输入Dropbox应用中的App key和App secret,许可类型选择a,确认y,复制给出的权限验证链接到浏览器,确认后回到终端按任意键完成。
之后可以执行下面的命令测试上传,提示Done就是绑定成功了:
./dropbox_uploader.sh upload /etc/passwd /backup/passwd.old
3.编写备份脚本
编写定时备份脚本,取名为backup.sh。其代码如下:
#!/bin/bash # 定义需要备份的目录 WEB_DIR=/home/www # 网站数据存放目录 # 定义备份存放目录 DROPBOX_DIR=/$(date +%Y-%m-%d) # Dropbox上的备份目录 LOCAL_BAK_DIR=/home/backup # 本地备份文件存放目录 # 定义备份文件名称 DBBakName=DB_$(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 OldWebBakName=Web_$(date -d -10day +%Y%m%d).tar.gz cd $LOCAL_BAK_DIR #使用命令导出数据库 mongodump --out $LOCAL_BAK_DIR/mongodb/ --db bastogne #压缩数据库文件合并为一个压缩文件 tar zcf $LOCAL_BAK_DIR/$DBBakName $LOCAL_BAK_DIR/mongodb rm -rf $LOCAL_BAK_DIR/mongodb #压缩网站数据 cd $WEB_DIR tar zcf $LOCAL_BAK_DIR/$WebBakName ./* cd ~ #开始上传 ./dropbox_uploader.sh upload $LOCAL_BAK_DIR/$DBBakName $DROPBOX_DIR/$DBBakName ./dropbox_uploader.sh upload $LOCAL_BAK_DIR/$WebBakName $DROPBOX_DIR/$WebBakName #删除旧数据 rm -rf $LOCAL_BAK_DIR/$OldDBBakName $LOCAL_BAK_DIR/$OldWebBakName ./dropbox_uploader.sh delete $Old_DROPBOX_DIR/ echo -e "Backup Done!"
其中,用户可以根据自己的需求改编需要备份的目录,以及保留旧数据的时长(比如我这里设置的是Dropbox保留7天,本地保留10天)。
接下来,为这个备份脚本增加执行权限:
# chmod +x backup.sh
测试该备份脚本:
./backup.sh
4.设置定时任务
执行:
crontab –e
添加:
30 3 * * * /root/backup.sh
这样,就可以每天凌晨3:30自动备份到Dropbox了。
5.最后重启Crontab
service cron restart
重启之后就设置完成了
如果你不知道服务器当前时间,可以使用下面的命令,查看当前时间:
date -R
修改当前时区:
cp /usr/share/zoneinfo/主时区/次时区 /etc/localtime
例如:
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
即修改服务器时区为上海。
6.Reference
本文部分内容参考自:
https://timeting.com/27/use-scripts-auto-backup-vps-to-dropbox/