我有 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 感谢这几位大佬提供的教程。