CentOS7でskickaを使ってGoogleドライブにファイルをアップロード
CentOS7のサーバでDB(MySQL)のバックアップファイルをGoogleドライブにアップロードしたいことがあって調べると、skickaというツールを使って、コマンドラインからGoogleドライブにアクセスできる方法があることを知ったので、試しに使ってみました。
目次
- Goのインストール、設定
- skickaのインストール、設定
- ファイルのアップロード
- cronで実行する場合
- 参考リンク
Goのインストール、設定
skickaはGo言語で作成されているので使用するには、Go言語の実行環境が必要です。
インストール方法は以下の通り。(詳しくはこちら)
# wgetのインストール(インストール済みであれば不要)
yum install wget
# ホームディレクトリへ移動
cd ~/
# ファイルのダウンロード
wget https://dl.google.com/go/go1.14.4.linux-amd64.tar.gz
# 解凍
tar -C /usr/local -xzf go1.14.4.linux-amd64.tar.gz
Go言語のバージョンはこちらから確認してください。
続いてパス(PATH)の設定。
「~/.bash_profile」ファイルのPATHをexportしている前に以下の内容を追加します。
# golang
PATH=$PATH:/usr/local/go/bin
※ 環境変数の設定ファイル「.bash_profile」や「.bashrc」はホームディレクトリ配下にあります。
保存後、設定の反映。
source ~/.bash_profile
以下のコマンドを実行して正常に動作すればOKです。
go version
skickaのインストール、設定
続いて、skickaのインストールを行います。
go get github.com/google/skicka
上記のコマンドは実行が完了するまで時間が結構かかりました。終了するまでまったく反応がなかったので注意。
処理が戻ってきたら、必要なファイルを /usr/local/go/bin 配下に移動します。
mv go/bin/skicka /usr/local/go/bin/
初期化を行い、
skicka init
あとは使用するGoogleドライブのアカウントの認証を以下のコマンドで行います。
skicka -no-browser-auth ls
上記のコマンドを実行すると、URLが出力されるので、ブラウザに貼り付けてアクセスするのですが、これが問題で、アカウント選択後、このアプリでは「Googleでログイン」機能が一時的に無効 というエラーが出て失敗します。
ちょっと前の記事ではすんなり認証が通るような記述が散見されるので、エラーが出るようになったのは最近(2020年)になってからなのかもしれません。
どうしたもんかと思いましたが、対処方法について記述している記事がありました。
skickaの『「Google でログイン」機能が一時的に無効』を一時的に解決する - Qiita
上記の記事に書いている内容を設定後、再度、「skicka -no-browser-auth ls」を実行すると、先ほどと変わって、安全ではないページが~と表示されるので、詳細を開いて認証を続行すると、Googleドライブにアクセスすることが可能になります。
ファイルのアップロード
skickaでGoogleドライブにファイルをアップロードするコマンドは以下の通り。
skicka upload ~/backup/text.txt /backup
インストールと設定さえ行えば、上記のように簡単なコマンドでGoogleドライブにアクセスできるようになります。
cronで実行する場合
skickaを定期的にcronで実行する場合、cron用のパス指定が必要になります。
/etc/crontab を開くと上部にパスの指定があるので、ここにパス「/usr/local/go/bin」を追記します。
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/go/bin
MAILTO=root