使用Dropbox API备份Ghost博客
在之前的文章,《使用Docker构建Ghost博客(2/2):备份和更新》 已经介绍了如何定时备份 Ghost 博客数据到本地的一个.tar.gz文件。
但严格来说,这种备份不是很有效,毕竟在同一台服务器。因此,最好的办法是寻找==一个异地备份==。
对于个人博客来说,单独搭建一个异地服务器的成本太高,倒不如利用现有的云存储实现,更为方便和节约。而 Dropbox 恰好可以实现。下面将具体介绍方法。
1. 创建 Dropbox App
Dropbox 除了提供客户端程序外,还开放了 API 供开发者使用。登录 Dropbox 后在左下角会有“开发人员”的选项,点击进入:
依次点击My Apps → Create App → Dropbox API → App folder
(为了安全,建议第二步选择App folder,将操作限制在一个单独的文件夹内)
在生成的 App 里,点击 Generated access token,生成一串 token 字符串,供下面使用。
2. 测试 Dropbox 上传脚本
到服务器后台,下载 Github 上已经封装好的shell脚本,更方便的直接调用 Dropbox API:
wget https://raw.github.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh
第一次直接运行此脚本,会提示输入 token,输入之前 Generate 的 token 字符串即可。
在服务器上创建一个 test.txt 文件,使用 dropbox_uploader.sh 上传,命令如下:
dropbox_uploader.sh test.txt test.txt
意思是将本地的 test.txt 文件上传到服务器上,路径和文件名也是 test.txt。成功后,在 Dropbox 里可以看到成功上传的文件。
3. 自动上传脚本
之前,我们已经自动在 /root/ghost/backup 生成了 .tar.gz 的备份文件,所以只用执行如下命令,就完成了备份到 Dropbox :
dropbox_uploader.sh /root/ghost/backup/xxx.tar.gz xxx.tar.gz
结合之前凌晨3点导出备份文件的脚本,使用下面的脚本进一步上传到 Dropbox :
#!/bin/bash
# Dropbox 上传Ghost备份文件 by imshuai.com
# GHOST备份文件所在的目录,在这个目录里面,每天生成一个ghost*.tar.gz文件
GHOST_BACKUP_DIR=/root/ghost/backup
# dropbox 上传脚本
DROPBOX_UPLOAD_SHELL=/root/dropbox_backup/dropbox_uploader.sh
cd $GHOST_BACKUP_DIR
# 获取备份目录下的最新一个备份tar.gz文件
backupFileName=`ls -1tr ghost*.tar.gz |tail -n 1`
if [ x"$backupFileName" = x"" ];then
echo "can not find backup file in folder $GHOST_BACKUP_DIR"
exit 1
fi
# 将最新的备份上传
$DROPBOX_UPLOAD_SHELL upload $GHOST_BACKUP_DIR/$backupFileName $backupFileName
在原来的 crontab 里增加一条,凌晨 3:15 将 backup_ghost.sh 产生的.tar.gz 文件上传Dropbox :
0 3 * * * /root/ghost/backup/backup_ghost.sh
15 3 * * * /root/dropbox_backup/upload_ghost_backup.sh
4. 总结
- Dropbox API 提供了不用客户端完成Dropbox文件同步的接口。
- 借用 Github 上的开源 shell 脚本调用 Dropbox API 更方便。
- crontab 后台自动调用,实现每日自动上传备份。
- 该方法也适用于其他服务器环境备份到Dropbox。
-------------------------
本文采用 知识共享署名 4.0 国际许可协议(CC-BY 4.0)进行许可。转载请注明来源:https://imshuai.com/using-dropbox-api-to-backup-blog 欢迎指正或在下方评论。