Linux下Google Drive同步软件
之前撸了Google Drive(以下简称GD)的教育版无限容量空间,主要用作大文件的中转和存储。比如某台VPS需要重做系统,临时需要把VPS上重要的一些文件进行备份,待系统重装完后再从GD恢复到VPS上来。
Windows下,GD官方客户端倒是很好用,可是手里的VPS大部分是Linux系统,有没有好用的Linux客户端呢?
Linux下GD的第三方客户端有很多,对比使用之后还是觉得GDrive好用。Github:https://github.com/prasmussen/gdrive
简单的介绍一下Linux下GDrive的一些常用方法吧,以下操作基于CentOS 7 64bits
安装
GDrive的git上已经提供了多种系统下的已编译好的客户端,https://github.com/prasmussen/gdrive#downloads
p.s 不过由于它托管在GD上,正常网络情况下无法下载。所以我就挪到我的Nextcloud上(gdrive-linux-x64)
wget -O /usr/bin/gdrive https://file.bugxia.com/s/HjoJ5YnnxACQHLy/download
chmod 755 /usr/bin/gdrive
授权
使用GDrive进行同步前需要对GDrive进行授权
gdrive about
执行该命令后,将显示的网址复制下来,粘贴到浏览器中进行访问
登录自己的Google账号,进行授权,最后一步会获取到一个Token,复制并粘贴到ssh进行验证
验证通过就可以看到自己的账户信息
使用方法
GDrive提供了一套文件操作命令,详见Git,本文列举一些简单的操作
上传文件
上传至GD根目录
gdrive upload 本地文件路径
#如:gdrive upload gcc-4.9.4.tar.gz
上传至指定GD目录
首先需要获取GD上文件夹对应的目录ID,此目录名称和路径不一样,需要通过 gdrive list 命令查看,或网页端获取,比如要获取文件夹名称为BugXiaTest目录ID
#如果GD上文件不多,可以省略grep
gdrive list | grep BugXiaTest
如果文件数量很庞大,可以使用 –query 参数使用GD API相关命令进行查询,详见:https://developers.google.com/drive/v3/web/search-parameters
gdrive list --query "name contains 'BugXiaTest'"
或者网页端查看
上传文件至BugXiaTest目录
#如:gdrive upload axel-2.16.1.tar.gz --parent 1-nmMVwwrWXnndXVd_FLfwY3_kRelE-nV
gdrive upload 本地文件名称\路径 -p GD目录ID
上传完成后会显示该文件在GD上对应的文件ID和平均上传速度
下载文件
如果只需要下载到当前目录,可以省略 –path 参数
#如:gdrive download 1cyKbrbaIbjDVQYTOcEY3HVW5-bFAurll --path /root/axel
gdrive download GD上对应的文件ID --path 本地文件夹路径
#或
gdrive download GD上对应的文件ID
删除文件或文件夹
#删除文件
gdrive delete 文件ID
#删除目录
gdrive delete -r 目录ID
同步本地文件夹到GD
#如:gdrive sync upload --keep-remote /root/backup 1-nmMVwwrWXnndXVd_FLfwY3_kRelE-nV
gdrive sync upload 参数 本地文件夹路径 GD目录ID
参数:
–keep-remote 如果同步的文件和GD上的相同,则保留GD上的
–keep-local 如果同步的文件和GD上的相同,则覆盖GD上的
–keep-largest 如果同步的文件和GD上的相同,则上传文件体积大的
–delete-extraneous 如果GD上存在本机没有的文件,则删除GD上这些无关的文件
同步GD文件夹到本地
#如:gdrive sync download --keep-remote 1-nmMVwwrWXnndXVd_FLfwY3_kRelE-nV /root/backup
gdrive sync download 参数 GD目录ID 本地文件夹路径
参数:
–keep-remote 如果同步到本地的文件和GD上的相同,则保留GD上的
–keep-local 如果同步到本地的文件和GD上的相同,则覆盖GD上的
–keep-largest 如果同步到本地的文件和GD上的相同,则同步文件体积大的
–delete-extraneous 如果本地目录下存在GD上没有的文件,则删除本地文件夹下这些无关的文件
实例
比如某台VPS,安装了宝塔面板,已经在宝塔中添加定时备份数据库和网站文件到本机,现在需要定时把备份文件夹同步到GD上,脚本如下:
LocalDIRPath="/www/backup";
RemotePath="GD上备份文件夹的目录ID";
Args="--keep-local --delete-extraneous";
gdrive sync upload ${Args} ${LocalDIRPath} ${RemotePath};
在宝塔里添加执行该脚本的计划任务即可