Google Drive 使ってますか?
はい、私はほぼ無限容量を持っているので、Google Drive が大活躍しています。
Google DriveにログだのVMだの殆どをバックアップ出来て便利。
google drive をコマンドから使いたい
fuse なども色々有りますが、ocamlfuse の google dirve なども試しました。
go で書かれた gdrive が1番使いやすかった
!!2020-01-28 更新!!
この記事は古いです。
この目的の場合、rclone 使ってください。
rclone については次の記事に書いてあります。
rclone コマンドで google ドライブにデータを転送する(rcloneインストール方法と使い方) - それマグで!
rclone よりgdrive コマンドより使いやすいです。
インストール
macOS X の場合
brew install gdrive
curl -JLO https://docs.google.com/uc?id=0B3X9GlR6EmbnQ0FtZmJJUXEyRTA&export=download chmod +x gdrive-linux-x64 mv gdrive-linux-x64 /usr/local/bin alias gdrive=gdrive-linux-x64
使い方:OAuth キーの取得
とにかく最初に list する
gdrive list
すると、認証URLを放ってくれるので、URLにアクセスして、認証トークンを頂いてくる
主な機能
- アップロード
- ダウンロード
- フォルダ毎同期
とくに、フォルダ同期が便利で、fsevent に貼り付けてgdrive 起動したら、DropBoxイラネ!ってなる。
macOS X のlaunchdなら手軽にフォルダ監視スクリプトを登録できるから、DroboxやGoogleDriveの機能を手軽に作ることが出来る。
速度が早い
OcamlFuseを使ってたんだけど、gdriveの方が転送速度が早いので、主にコッチを使うことになると思います。
初回起動後のOAuth設定
初回起動し、OAuthを設定したら、ファイルが生成される
~/.gdrive/token_v2.json
これがトークンのファイル。ファイルを消せばもう一度初期設定からやり直せる。
基本的な操作方法
GoogleDriveのファイルの一覧
gdrive list
list コマンドで、ファイルの一覧をだせる。この結果からわかるのがGoogleDrive特徴です。ドライブではファイルはID管理されていて、KVSになっているという点ですね。つまり、単純なファイルのキーの一覧になりますね。フラットな感じ。
ダウンロード
gdrive download XXxxxXXXXX
Id を指定してダウンロードする。
ディレクトリのダウンロード
ディレクトリのIDを指定して、GoogleDriveディレクトリをダウンロードするには、recursive
オプションが必要でした。
gdrive download XXXXXX --recursive
カレントディレクトリにダウンロードできる。ディレクトリの中身がまるっと出てくるので楽チン
アップロード
gdrive upload my-file.rb
GoogleDrive側のファイルを削除
gdrive delete XXXXXXXXXXXXXXX
目的のファイルが見つからないよ。。。
list してもファイルが見つからないことのほうが多いですよね。 query 使います。
gdrive list -q 'name contains "word" '
詳しくはここ。https://developers.google.com/drive/search-parameters
でも、マニュアル読んでもよくわからないですよね。
とりあえず、最初にこれ
- name contains 'keyword'
- modifiedTime >= '2016-07-24'
- fullText contains 'keyword'
- trashed = false
を覚えておいて。
この条件を and
で繋げばいいんですよ。
とくに、ダウンロードするには trashed = false
をつけないと、ゴミ箱のファイルを取り出しちゃうので注意が必要だった。
まとめてダウンロードしたい
検索結果をまとめて取出すには
gdrive list --no-header | cut -d ' ' -f 1 | xargs ...
と --no-header
オプションと組み合わせると嬉しい感じ。
sync 同期 アップロード
ローカル→GoogleDriveへの同期アップロードも出来ます。
SyncするにはSync専用のディレクトリが必要なようです。空のディレクトリを作ります。
mkdir my-test gdrive upload my-test gdrive list 'name contains "my-test"'
ここで作られたIDを元に、同期したいディレクトリをサーバーへ転送します。
gdrive sync src ID_XXXXXXXXXXX
同期用に指定した空のディレクトリやファイルにはappPropertiesでフラグがたつらしい。このフラグを使って同期対象を識別し、同期処理を行うのに利用するみたいですね。
アップロード上限について
gdrive 諦めた
gdrive はちょっとくせがあるので、 rclone に移行した
rclone コマンドで google ドライブにデータを転送する(rcloneインストール方法と使い方) - それマグで!
2016-12-21 追記
Google Drive は有料課金するとストレージ容量が無制限になるので、かなり遊べますよ
2019/03/28
追記
2022-04-06
追記