背景
VPSサーバで何かしらのデータのバックアップを取っておきたいときに、バックアップを同一サーバ内に保存しておくでも良いが、手違いやアクシデントなどでサーバ自体のデータが消失したときのために、Ubuntu上からGoogle Driveにアクセスして保存しておけたら便利かと思ったため。また、サーバ上だとバックアップデータの取得のためにSFTP接続などが必要になるが、Google Driveだとアクセスも容易なため。
環境
OS: Ubuntu 22.04 LTS
設定手順
Google CloudでOAuthクライアントIDを作成する
OAuthの認証情報が必要になりますのでGoogle Cloudにアクセスして作成します
https://console.cloud.google.com/
手順は下記の通りです
プロジェクトがない場合はまず最初にプロジェクトを作成
Google Drive APIで検索して有効化
APIとサービス → OAuth同意画面の作成
Internalを選ぶと組織内部のみの認証ができます
APIとサービス → 認証情報の作成
上記でできあがったクライアントIDとクライアントシークレットを使用します。
Ubuntuでの設定
google-drive-ocamlfuseをUbuntuにインストール
sudo add-apt-repository ppa:alessandro-strada/ppa
sudo apt-get update
sudo apt-get install google-drive-ocamlfuse
認証を行う
この状態で
google-drive-ocamlfuse
とコマンドを打つと以下のエラーが出ます
/bin/sh: 1: xdg-open: not found
/bin/sh: 1: firefox: not found
/bin/sh: 1: google-chrome: not found
/bin/sh: 1: chromium-browser: not found
google-drive-ocamlfuseはGUIのブラウザで認証を求めるものであるため、GUI環境のない場合には上記のようなエラーが出ます。
そこでCUI環境のみの場合にはheadlessで認証を行います。
google-drive-ocamlfuse -headless -id クライアントID -secret クライアントシークレット
クライアントIDとクライアントシークレットには最初の手順で作成したものを入れてください。コマンドを打つと以下が表示されます
Please, open the following URL in a web browser: https://accounts.google.com/o/oauth2/auth?client_id=hogehoge&redirect_uri=http%3A%2F%2F127.0.0.1%3A8080%2Foauth2callback&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&response_type=code&access_type=offline&approval_prompt=force
Please enter the verification code:
Please, open the following URL in a web browser:
で示されたURLをブラウザで開きます。そしてを認証で許可を行うと以下のようなページにリダイレクトされます
http://127.0.0.1:8080/oauth2callback?code=hogehoge&scope=https://www.googleapis.com/auth/drive
上記のcodeのパラメータhogehogeをコピーしてverification codeに入力すると認証完了です
Google Driveのマウント
マイドライブをマウントしたい場合には特に何も設定せず以下のようにコマンドを実行
mkdir GoogleDrive
google-drive-ocamlfuse ./GoogleDrive
今回は共有ドライブをマウントしたいので~/.gdfuse/default/config
を編集する必要があります。
ファイル内のteam_drive_idにIDを設定、IDの調べ方はドライブのルートURLのhogehoge部分です
https://drive.google.com/drive/folders/hogehoge
team_drive_id=hogehoge
上記を変更した後にドライブをマウントすると共有ドライブをマウントすることができます。(設定が反映されなかった場合には設定後に再度認証を行うと反映されたりしました。)
ドライブをアンマウントしたいときは
fusermount -u ~/GoogleDrive
うまくマウントできない場合などのキャッシュクリア
google-drive-ocamlfuse -cc
最後に
サービスとして自動でバックアップを取ってくれるもの以外では適切なバックアップ方法を模索する必要があると感じました。他にも良い方法がないかを検討していけたらと思っています。
以上です。
参考