gdrive 实现服务器文件的备份/同步
gdrive 是 Linux 下访问 google drive 的工具,可以实现文件的上传下载及同步,对于服务器文件的备份很方便。配合 定时运行脚本,可实现自动化操作。
项目地址:https://github.com/prasmussen/gdrive
编译安装
新版的 gdrive 无法在 Google 账户授权了,需要自己手动编译安装并绑定 ID。
有一个自动脚本可以完成这一过程:https://github.com/mbrother2/backuptogoogle
curl -o butgg.bash https://raw.githubusercontent.com/mbrother2/backuptogoogle/master/butgg.bash
bash butgg.bash --setup
运行脚本会自动安装 go 环境和下载 gdrive 最新源码,期间会提示输入 Google credential,申请自己的 credential 教程如下:https://github.com/mbrother2/backuptogoogle/wiki/Create-own-Google-credential-step-by-step
输入两个 ID 后,脚本提示设置需要备份的目录之类的,这里我们只需要编译好的 gdrvie,所以直接 ctrl C 结束当前脚本即可,编译好的可执行文件在 ~/go/bin
目录下,复制到系统路径并设置可执行属性:
cp ~/go/bin/gdrvie /usr/local/bin
chmod +x /usr/local/bin/gdrive
执行测试账号是否已经绑定:
gdrive about
返回值为你的google drvie 信息即可。
使用
list
gdrive list [options]
options:
-m, --max <maxFiles> Max files to list, default: 30
-q, --query <query> Default query: "trashed = false and 'me' in owners".
--order <sortOrder> Sort order.
query可用参数:https://developers.google.com/drive/api/v3/ref-search-terms#operators
order 可用参数:'createdTime', 'folder', 'modifiedByMeTime', 'modifiedTime', 'name', 'name_natural', 'quotaBytesUsed', 'recency', 'sharedWithMeTime', 'starred', and 'viewedByMeTime'
例如,列出文件名包含 "gdrive" 的最大的三个文件,按从大到小排列:
gdrive list --query "name contains 'gdrive'" --order "quotaBytesUsed desc" -m 3
download
想要下载文件或文件夹,首先必须知道文件的 ID,需要通过 list 指令获取。
gdrive download [options] <fileId>
options:
-f, --force Overwrite existing file
-r, --recursive Download directory recursively, documents will be skipped
--path <path> Download path
例如,下载文件到指定目录:
gdrive download --path /your/path 0B3X9GlR6EmbnZ1NGS25FdEVlWEk
upload
drive upload [options] <path>
options:
-r, --recursive Upload directory recursively
-p, --parent <parent> Parent id, used to upload file to a specific directory
--name <name> Filename
不指定目录则上传到根目录。
例如,上传文件到指定 google drive 目录:
gdrive upload -p 3X9GlR6EmbnZ1NGS25FdEVlW test.txt
mkdir
在 google drive 根目录新建文件夹:
gdrive mkdir foldername
sync
同步功能可以将文件或文件夹进行同步,适用与 vps 的备份。
同步远程文件夹到本地
gdrive sync download [options] <fileId> <path>
options:
--keep-remote Keep remote file when a conflict is encountered
--keep-local Keep local file when a conflict is encountered
例如,同步远程文件夹到本地:
gdrive sync download 3X9GlR6EmbnZ1NGS25FdEVlW /home/download
options:
--keep-remote Keep remote file when a conflict is encountered
--keep-local Keep local file when a conflict is encountered
同步本地文件夹到远程
gdrive sync upload [options] <path> <fileId>
例如:
gdrive sync upload /home/upload 3X9GlR6EmbnZ1NGS25FdEVlW
以后如果文件发生了更改需要再次同步,则可以再次执行以上命令。
查看当前已经设置的sync 同步:
gdrive sync list
标签:gdrive