この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
#
はじめに
こんにちは植木和樹@上越オフィスです。本日はGoogle Drive用コマンドライン インタフェース skicka
のご紹介です。
先日6年ぶりにWindowsノートPCを手にいれました。
せっかくなので先週はMacbook Proを自宅に残し、Surface Goだけ持って東京へ出張してみることにしました。ただ予想外のトラブルでsshやawscli操作が必要になるかも?ということで、ホームディレクトリ下の~/.ssh
や~/.aws
はWindowsにもコピーしておきたいところです。
いわゆる dotfiles はgithubを使って環境を復元できるようにしているのですが、~/.ssh
や~/.aws
には秘密鍵やクレデンシャル情報が含まれておりgithubにはあげられません。
どうにか簡単に2台の間でファイルを受け渡しできないか、ということで今回Google Driveを利用してみることにしました。またGUIだとドットで始まるフォルダは不可視で扱うことが難しいため、cliから操作することにしました。
skicka について
skicka はGoogle Drive用コマンドラインユーティリティです。
ちなみに skicka
はスウェーデン語だそうで、「送る」(英語で send
)を意味する単語だそうです。
インストール
事前に go
が必要になりますので、homebrew で入れておいてください。インストールしたらパスを通しておきます。
$ go get github.com/google/skicka
(bash/zsh)
$ export PATH=~/go/bin;$PATH
(fish)
$ set -x PATH ~/go/bin $PATH
インストールしたら、設定ファイルを初期化します。
$ skicka init
2019/02/12 13:41:21 created configuration file /home/kazuki/.skicka.config.
最初に適当なサブコマンドを実行するとGoogleの認証が行われます。ブラウザが起動するのでGoogle認証し、表示される認証コードをコマンドラインに入力してください。
なおMacの場合は自動でブラウザが起動しますが、Windows Subsystems for Linuxの場合はブラウザが起動しません。その時は -no-browser-auth
オプションをつけるとURLを出力してくれるので、ブラウザのアドレスバーに貼り付けて認証に進んでください。
$ skicka -no-browser-auth df
Go to the following link in your browser: (ここにURLが表示される)
Enter verification code: (認証後に表示される認証コードをここに貼り付けたらエンターキーを押す)
使いかた
認証が終わったら改めてサブコマンドを実行してみましょう。
df
は現在のGoogle Driveの使用状況を表示してくれます。
$ skicka df
Capacity 10.00 TiB
Trash 1.09 GiB 0.01%
Drive 5.01 GiB 0.05%
Photos 0 B 0.00%
Gmail 16.82 GiB 0.16%
Free space 9.98 TiB 99.78%
クラスメソッドのG SuiteはビジネスプランなのでGoogle Driveは無制限ですが、10テラバイトで認識されてるみたいですね。
ls
コマンドでディレクトリやファイル一覧を表示します。mkdir
でディレクトリを作成できます。
$ skicka ls
$ skicka mkdir _dotfiles
ファイルのアップロードは upload
、ダウンロードは download
です。
ここで2点注意です。
1) upload/download
コマンドは同期処理となります。すでに同じ内容のファイルがある場合はスキップされます。
2) ディレクトリも含めたファイルコピーの挙動がUnixのcp/mvと異なります。
# (↓このコマンドだと ~/.aws 以下のファイルが _dotfiles にコピーされてしまう)
$ skicka upload ~/.aws _dotfiles
# (ディレクトリごとコピーしたい場合は宛先にディレクトリ名をつけるのを忘れずに)
$ skicka upload ~/.aws _dotfiles/.aws
$ skicka upload ~/.ssh _dotfiles/.ssh
# (同様にディレクトリごとダウンロードしたい場合も宛先にディレクトリ名をつける)
$ skicka download _dotfiles/.aws ~/.aws
$ skicka download _dotfiles/.ssh ~/.ssh
skickaではUnixでお馴染みのコマンドが使えます。
$ skicka
usage: skicka [skicka options] <command></command> [command options]
Supported commands are:
cat Print the contents of the given file
download Download a file or folder hierarchy from Drive to the local disk
df Display free space on Drive
du Report disk usage for a folder hierarchy on Drive
fsck Check consistency of files in Drive and local metadata cache
genkey Generate a new encryption key
init Create an initial skicka configuration file
ls List the contents of a folder on Google Drive
mkdir Create a new folder or folder hierarchy on Drive
rm Remove a file or folder on Google Drive
upload Upload a local file or directory hierarchy to Drive
'skicka help' prints more detailed documentation.
オマケ
どうしても skicka
というコマンド名が覚えられないため ggl
というエイリアスにしています。(40代男性 妙高市在住)
(bash/zsh)
$ alias ggl=skicka
(fish)
$ alias ggl skicka
$ ggl df
$ ggl ls
$ ggl mkdir
まとめ
今回は skicka
のご紹介でした。Unixのファイル操作で使うコマンドがそのまま使えるため、使い慣れるのは簡単なのではないでしょうか。
普段はGoogle Driveをドライブ ファイル ストリームでマウントし作成したファイルを保存しておけば、不意な事故でもファイルの消失は防ぐことができます。 しかし今回のようにどうしてもローカルディスクに作成する(重要な)ファイルもあるかと思います。定期的なバックアップのように繰り返し作業する際にはGUIよりCLIの方が適してる場合もあります。導入も簡単ですので、ぜひ使ってみてください。
(cliで操作できれば、シェルスクリプト化して dotfiles と一緒に管理しやすいですし)
万が一の時に困らないよう、普段から自分に合った方法でバックアップを心がけましょう。