Centos7 使用 Goole Drive 进行数据备份、同步

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

安装 Gdrive

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

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

授权

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

1
gdrive about

使用 Gdrive

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

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

1
gdrive list

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

1
gdrive download xxxx

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

1
gdrive upload xxxx

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

1
gdrive mkdir xxx

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

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

1
2
3
4
5
6
7
第 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 目录下, 运行下面的代码

1
2
cd /root
chmod +x googledrive.sh

创建定时任务

1
crontab -e

添加

1
0 2 * * * /backups/googledrive.sh

Google Drive 的一些高级操作

先列出文件和文件夹

1
gdrive list

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

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

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

1
gdrive download 0BzTeuubJesi

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

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

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

1
gdrive sync download 0B3X9GlR6EmbnOEd6cEh6bU9XZWM myLocaldir

查询所有版本

1
gdrive revision list YUlPWWdLcy1mX2c

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

1
gdrive revision download YUlPWWdLcy1mX2c Y3JBWEJ5a0gwZndlR3hzWlZubFlUMWFnaHVnPQ

删除某一版本

1
gdrive revision delete YUlPWWdLcy1mX2c Y3JBWEJ5a0gwZndlR3hzWlZubFlUMWFnaHVnPQ

脚本源码

脚本源码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/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
感谢这几位大佬提供的教程。

坚持原创技术分享,您的支持将鼓励我继续创作!