Hi!请登陆

定时备份服务器并上传到 Google Drive

2021-1-8 47 1/8

家一直常说数据无价,数据备份一直是做站必经的一个环节。经过这么长的时间,已经有很多方法套路来做好备份工作了。不过无论什么方法,最重要的还是需要保证备份处的储存安全。而在众多方法中,保存到 Google Drive 是一个很好的选择。谷歌盘具有在全球绝大多数区域的可用性及上下行速度的保证且加入 G Suite 商业版就可以获取无限空间,实在是值得使用。

安装 Gdrive

Gdrive 项目地址:https://github.com/prasmussen/gdrive
在项目的 Readme 文件中可以找到各系统环境下的安装包地址
此处我们以 Centos 7.1 64bit 为环境,所以选择 gdrive-linux-x64

  • wget -O /usr/bin/gdrive "https://docs.google.com/uc?id=0B3X9GlR6EmbnQ0FtZmJJUXEyRTA&export=download" && chmod +x /usr/bin/gdrive

执行命令

  • gdrive about

此时程序会给出一个链接,复制这个链接到浏览器并访问,选择你的 Google 帐号并登陆
复制程序给出的链接授权 Gdrive 访问你的 Google Drive,然后你就可以得到一个授权码,复制授权码回程序。此时你的 Google 帐号就已经绑定到服务器的 gdrive 程序上了,程序会返回你的 Google Drive 相关信息Gdrive绑定成功

配置备份

无数据库的网站

对于无数据库的网站比如 https://resource.irain.in 只要使用简单的 zip 命令进行全站压缩即可

  • mkdir /data/backup
  • cd /data/wwwroot/
  • zip -r /data/backup/resource.irain.in$(date +%Y%m%d).zip resource.irain.in

含数据库网站

此处以 OneinStack 为例

  • cd lnmp
  • ./backup.sh

配置上传

gdrive 官方文档中对上传命令的解释

gdrive [global] upload [options] ###Upload file or directory
gdrive [global] upload - [options] ###Upload file from stdin

方法实现

我们首先在 Google Drive 中创建一个专门安放各个服务器备份文件的目录,并为每个服务器单独设置目录,得到该目录的 ID(见地址栏选中部分)
设置目录

然后在 Linux 端测试一次上传

  • gdrive upload -r --parent 目录ID /data/backup/

此时服务器就开始上传了,等上传完成后到 Google Drive 中确认是否备份文件上传成功
上传备份

自动备份设置

  • crontab -e

对于无数据库的网站

  • 0 1 * * * mkdir /data/backup #凌晨1点创建backup文件夹
  • 1 1 * * * cd /data/wwwroot/;zip -r /data/backup/resource.irain.in$(date +%Y%m%d).zip resource.irain.in #1点01分以域名+日期为名创建备份文件
  • 0 2 * * * gdrive upload -r --parent 目录ID /data/backup/ #2点上传备份文件
  • 0 6 * * * rm -rf /data/backup #6点删除backup文件夹

对于含数据库的网站

  • 0 1 * * * cd ~/lnmp;./backup.sh > /dev/null 2>&1 & #创建lnmp备份
  • 59 1 * * * mkdir /data/backups
  • 0 2 * * * cd /data/; zip -r /data/backups/lnmp_backup$(date +%Y%m%d).zip backup #创建总备份zip
  • 0 3 * * * gdrive upload -r --parent 目录ID /data/backups/ #上传备份文件
  • 0 6 * * * rm -rf /data/backups #删除backup文件夹

退出 crontab 设置并重启

  • service crond restart

相关推荐