Google Drive用コマンド skicka でWindows/Macのファイルをバックアップ
#
はじめに
こんにちは植木和樹@上越オフィスです。本日は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 と一緒に管理しやすいですし)
万が一の時に困らないよう、普段から自分に合った方法でバックアップを心がけましょう。