【CentOS7】Google Driveを使いたい【gdrive】
CentOS 7 で Google Drive を使い、データをクラウドにバックアップしたい。
環境
- CentOS Linux release 7.9.2009 (Core)
- go version go1.15.14 linux/amd64
- gdrive: 2.1.1
手順書
Petter Rasmussen さんが作成した gdrive というプログラムを使用して実現する。
Go 言語をインストールする
gdrive を動かすには Go 言語の環境が必要になるので、Go 言語を CentOS 7 にインストールする。
Go 言語のインストール手順は、下記の記事を参照して下さい。
gdrive をインストールする
下記のコマンドを実行し gdrive をインストールする。
go get github.com/prasmussen/gdrive
Google に認証する
gdrive の実行するには、Google に認証する必要がある。
認証に必要なトークンを表示するために Google Drive の情報を出力する下記のコマンドを実行する。
gdrive about
コマンドを実行すると下記のような URL が出力されるのでブラウザでアクセスする。
Authentication needed
Go to the following url in your browser:
https://accounts.google.com/o/oauth2/auth?access_type=offline&client_id=xxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&state=state
ブラウザで gdrive を許可するとコードが出力されるのでこれを入力する。
Enter verification code:
gdrive が認証に成功すると gdrive about
が実行され、下記のような Google Drive の情報が出力される。
User: USERNAME, MAIL
Used: x.x TB
Free: -x.x B
Total:
Max upload size: x.x TB
ディレクトリをアップロードしてみる
下記のコマンドを実行すると PATH
で指定したディレクトリが Google Drive にアップされる。下記の例では、Google Drive のトップレベルにディレクトリが作成される。PATH
が /usr/local/workspace/
だとするとGoogle Drive のトップレベルに workspace
というフォルダが作成され、その中にファイルやディレクトリがアップロードされる。
gdrive upload --recursive PATH
このコマンドは単純なアップロードのコマンドなので、ファイルを都度更新して行く場合は後述のコマンドを使う。
ディレクトリを同期(更新)してみる
Google Drive のフォルダの ID が必要になるので、アップロードするファイルを保管するフォルダを作成しておく。
フォルダの ID は URL の xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
の部分に表示されてる。下記は URL の例です。
https://drive.google.com/drive/u/0/folders/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
フォルダの中に他のファイルが入っているとコマンドの実行に失敗するので、フォルダを空にして、ゴミ箱に移動されたファイルも該当のファイルを右クリックして「完全に削除」するか、「ゴミ箱を空にする」を実行しておく。
下記のコマンドを実行するとディレクトリが Google Drive のフォルダにアップロードされる。
gdrive sync upload PATH xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
再度、同じコマンドを実行すると更新されたファイルがアップロードされる。
cron で定期的にディレクトリがアップロードされるようにする
下記のコマンドを実行して cron の設定ファイルを開く。
crontab -e
vi でファイルが開かれる。
i
を押して編集モードに入ると、カーソルキーでカーソルを移動、 Enter
で改行できるようになるので改行して新しい行に設定を入力する。
下記は、毎日の 12:00 にディレクトリが Google Drive にアップロードする設定する例です。
00 12 * * * root gdrive sync upload PATH xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
入力が終わったら Esc
→ :wq
→ Enter
の順に押して、設定ファイルを保存、vi を終了する。
下記のコマンドを実行し、cron のサービスを再起動し cron に先程入力した設定が反映されてるか下記のコマンドを実行し確認する。
crontab -l
先程入力した内容が出力されれば、cron に反映されてる。
引用・参考文献
下記のページに gdrive のリファレンスがありますので、gdrive をより使いこなしたい方は参照して下さい。