Skip to content

CentOS 7 Google Drive 数据备份与同步

Published: at 09:00 AMSuggest Changes

我有 3 个谷歌帐号,其中 2 个拥有无限空间的 Goole drive。 最近我需要备份网站数据,需要一天备份一次,国内的网盘我不放心,所以想到了谷歌云端硬盘。 在 Centos7 下使用谷歌云端硬盘非常的容易,一个老外已经写好了 Google Drive 的 CLI 工具-Gdrive 如果无法访问,可以上我自己的私有仓库-Gdrive

安装 Gdrive

进入 ssh,运行下面的命令即可

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

授权

运行下面的命令给 Gdrive 进行授权,输入命令后会出现一串网址并询问验证码,将地址粘贴到浏览器并登陆账号,会返回一串代码,粘贴,回车后会返回你的账户信息。

gdrive about

使用 Gdrive

常用命令如下,更多查看 gdrive 官网:Gdrive

列出 Google Drive 根目录下文件、文件夹

gdrive list

下载 Google Drive 根目录下文件到本地(xxxx 为文件名)

gdrive download xxxx

把本地文件上传到 Google Drive 根目录下(xxxx 为文件名)

gdrive upload xxxx

在 Google Drive 根目录下创建文件夹(xxx 为文件夹名)

gdrive mkdir xxx

自动备份,上传网站文件到 Google Drive

脚本下载:googledrive.sh,或则往下翻,我已经贴到后面了。 请根据自己的情况进行修改,修改以下部分:

 3 行:my-database-name 改为自己的数据库名
 4 行:my-database-user 改为自己的数据库用户名
 5 行:my-database-password 改为自己的数据库用户名对应的密码
 7 行:zhujiwiki 改为自己的网站目录
 8 行:/home/wwwroot 改为自己的网站所在目录(即需备份目录为 /home/wwwroot/zhujiwiki)
 9 行:/backups 改为备份文件存放目录
 35 行:youremail@yourdomain.com 修改为自己的邮箱

将脚本上传到/root 目录下,运行下面的代码

cd /root
chmod +x googledrive.sh

创建定时任务

crontab -e

添加

0 2 * * * /backups/googledrive.sh

Google Drive 的一些高级操作

先列出文件和文件夹

gdrive list

上传文件到 Google Drive 内的指定文件夹,其中 0B3X9GlR6EmbnY1RLVTk5VUtOVkk 为文件夹 ID,gdrive-osx-x64 为本地文件

gdrive upload --parent 0B3X9GlR6EmbnY1RLVTk5VUtOVkk gdrive-osx-x64

下载 Google Drive 内的指定文件夹到本地,其中 0BzTeuubJesi 为文件 ID

gdrive download 0BzTeuubJesi

同步文件到 Google Drive,newFolder 为你的本地文件夹,0B3X9GlR6EmbnOEd6cEh6bU9XZWM 为返回的 ID

# 在 Goole Drive 创建文件夹 drive-bin
gdrive mkdir drive-bin
# 创建文件夹后会返回文件夹 ID,同步你的本地文件夹到 Goole Drive,
gdrive sync upload newFolder 0B3X9GlR6EmbnOEd6cEh6bU9XZWM

从 Google Drive 同步文件到本地,myLocaldir 为你的本地文件夹,0B3X9GlR6EmbnOEd6cEh6bU9XZWM 为返回的 ID

gdrive sync download 0B3X9GlR6EmbnOEd6cEh6bU9XZWM myLocaldir

查询所有版本

gdrive revision list YUlPWWdLcy1mX2c

下载某一版本,最后两个 Id 分别为文件 Id 和版本 Id

gdrive revision download YUlPWWdLcy1mX2c Y3JBWEJ5a0gwZndlR3hzWlZubFlUMWFnaHVnPQ

删除某一版本

gdrive revision delete YUlPWWdLcy1mX2c Y3JBWEJ5a0gwZndlR3hzWlZubFlUMWFnaHVnPQ

脚本源码

脚本源码如下

#!/bin/sh
##-----------------------Database Access--------------------------##
DB_NAME="my-database-name"
DB_USER="my-database-user"
DB_PASSWORD="my-database-password"
##-----------------------Folder Web or Folder you want to backup--------------------------##
NameOfFolder=("zhujiwiki")
SourceOfFolder="/home/wwwroot"
BackupLocation="/backups"
date=$(date +"%Y-%m-%d")
##That mean, you will Backup the folder /home/wwwroot/zhujiwiki and will save into Folder /backups

if [ ! -d $BackupLocation ]; then
mkdir -p $BackupLocation
fi
find $BackupLocation/*.zip -mtime +10 -exec rm {} \;
for fd in $NameOfFolder; do
# Name of the Backup File
file=$fd-$date.zip

# Zip the Folder you will want to Backup
echo "Starting to zip the folder and files"
cd $SourceOfFolder
zip -r $BackupLocation/$file $fd
sleep 5s
mysqldump -u $DB_USER -p$DB_PASSWORD $DB_NAME | gzip > $BackupLocation/$date-$DB_NAME.sql.tar
sleep 5s
##Process Upload Files to Google Drive
gdrive upload --file /backups/$file
sleep 5s
gdrive upload --file /backups/$date-$DB_NAME.sql.tar
if test $? = 0
then
echo "Your Data Successfully Uploaded to the Google Drive!"
echo -e "Your Data Successfully created and uploaded to the Google Drive!" | mail -s "Your VPS Backup from $date" youremail@yourdomain.com
else
echo "Error in Your Data Upload to Google Drive" > $LOG_FILE
fi
done

后记

本文部分内容转载自: Gdrive:Linux 下同步 Google Drive 文件、自动备份网站到 Google Drive 命令行使用 Google Drive 感谢这几位大佬提供的教程。


Previous Post
使用 Git Webhooks 自动化部署
Next Post
写给 2035 年自己的信