Red Hat Enterprise Linux 9 のバックアップを Rcloneで Google Drive に同期する

conoha Linux
記事内に広告が含まれています。
スポンサーリンク

ConoHa の VPS に RHEL9 をインストールしていろいろ設定してきましたが、今回は遠隔バックアップの設定を入れていこうと思います。

既に MariaDB の設定の際に、ローカルの自動バックアップは行っていましたが、何かあった時のために Google Drive にも自動でコピーを置くようにします。

Rclone のインストール

EPEL リポジトリにある Rclone は、バージョンが 1.57.0(2021年11月)で結構古いものでした。

事前に調べたところ古いバージョンだと Google の認証まわりで不具合があるらしいので、新しいものを使った方が良さそうです。

公式サイトを見ると、最新バージョンは 1.66.0(2024年5月現在)でしたので、今回はこれを使用していきます。

Rclone downloads
Download rclone binaries for your OS.

インストールガイドによると Intel/AMD(64 Bit)の Zip ファイルをダウンロードして、バイナリファイルを適切な場所(/usr/bin/)に配置すれば良さそうですが、面倒なので今回は公式サイトの RPM からインストールしました。

Google Drive の設定

Rcolone の設定に入る前に、先に Google Drive でバックアップデータの保存先を作成しておきます。

このフォルダが Rclone でアクセスできる、ルートフォルダになります。

作成したフォルダに移動し、フォルダの ID を取得しておきます。

※URL で folders/ 以降の文字列が、後述する Rclone の root_folder_id の値になります。

Google Cloud の設定

続いて Rclone から操作する Google Drive API の準備をしていきます。

Google Cloud でプロジェクトの作成

Google Cloud Platform
Google Cloud Platform lets you build, deploy, and scale applications, websites, and services on the same infrastructure ...

Google Cloud にログインします。

「API とサービス」のページに移動し、「プロジェクトを作成」を選択してください。

プロジェクト名を入力(ここでは「Rclone Backup」としました)して、作成ボタンを押します。

Google Drive API の有効化

API とサービスを有効にすると、API ライブラリを選択する画面に遷移します。

API ライブラリの中から、Google Drive API を選択します。

Google Drive API を有効にするか尋ねられますので、「有効にする」を選択してください。

Google Drive API が有効になりました。

OAuth 同意画面の設定

認証情報を作成のボタンを押したくなるところですが、左のメニューから「OAuth 同意画面」を開きます。

OAuth 同意画面が開きますので、User Type を「外部」にして作成ボタンをクリックします。

アプリ登録の編集画面が表示されますので、任意のアプリ名を入力します。

また、ユーザーサポートメールとデベロッパーの連絡先情報には、Google アカウントで使用しているメールアドレスを入力します。

保存して次へ進むと、スコープの設定画面になりますので「スコープの追加または削除」をクリックします。

選択したスコープの更新画面になりますので、フィルタに「drive」と入れて絞り込みます。

範囲が「.../auth/docs」、「.../auth/drive」、「.../auth/drive.metadata.readonly」の 3 つのスコープにチェックを入れ、更新ボタンを押してください。

機密性の高いスコープに「.../auth/docs」が、制限付きのスコープに「.../auth/drive」と「.../auth/drive.metadata.readonly」が追加されたことを確認して、「保存して次へ」をクリックします。

テストユーザーの画面に進みますが、ユーザーは追加せずに次へ進みます。

OAuth 同意画面の概要が表示されますので、間違いがなければダッシュボードに戻ります。

OAuth 同意画面のダッシュボードに戻ったら、公開ステータスの「アプリを公開」ボタンをクリックして、本番環境にプッシュします。

公開ステータスが「テスト」から「本番環境」に変化しました。

確認ステータスで「確認が必要」となっていますが、一般公開しないので無視して大丈夫です。

認証情報を作成

続いて、認証情報の設定をしていきます。

左のメニューで「認証情報」を開き、画面上部の「+ 認証情報を作成」から「OAuth クライアント ID」を選択します。

OAuth クライアント ID の作成画面になりますので、アプリケーションの種類から「デスクトップアプリ」を選択し、任意の名前(ここでは Rclone)を付け、作成ボタンを押します。

OAuth クライアントを作成しましたというダイアログが表示されました。

クライアント ID と、クライアント シークレットが Rclone の設定の際に必要になりますので、この画面を表示したまま Rclone 側の設定を行っていきます。

Rclone のセットアップ

rclone config を実行して、遠隔バックアップの設定をしていきます。

新しく設定を入れていくので「n」で New remote を指定してください。

リモートのサービスを指定

続いて、リモートに対して任意の名前(ここでは GoogleDrive)を付け、サービスの種類(Google Drive の場合は 17)を指定します。

※サービスの番号(17)ではなく、drive と指定しても大丈夫です。

次に、サービスごとのオプションを指定していきます。

先ほど取得したクライアント ID を貼り付けます。

同様に、先ほど取得したクライアント シークレットを貼り付けます。

※ここまで入力したら、Google Cloud 側のダイアログは閉じても大丈夫です。

続いてアクセス権の設定になります。

バックアップファイルを書き込むので、フルアクセス(1)を入力します。

Rclone からアクセス可能な Google Drive のフォルダを指定したいので、Advanced config で Yes(y)を応答します。

root_folder_id には、前述した Google Drive のフォルダ ID を入力します。

それ以外の設定は全て空エンターで、デフォルト値を設定します。

最後に、再び Edit advanced config? と尋ねられますので、今度は No(n)で先に進みます。

ブラウザから Google にアクセスして認証を通すのですが、今回設定している VPS はデスクトップ環境が入っていないので No(n)を応答します。

Web ブラウザが入っている環境で、同じバージョンの Rclone を実行してトークンを取得する必要があるようです。

Windows 側でリモートセットアップを行う

ここで一旦ターミナルから離れて、Windows 側から認証操作を行います。

Rclone の公式サイトから、同じバージョン(1.66.0)の Windows 版の Zip ファイルをダウンロードして解凍します。

コマンドプロンプトを開き rclone.exe をドラッグ & ドロップすると Rclone までのパスが補完されるので、後ろにサーバー側の Rclone の認証トークンを貼り付け、実行します。

ブラウザが自動的に起動し、Google の警告画面が表示されます。(本番環境に移行した後、確認ステータスをパスしていないため表示されている警告なので、問題ありません。)

「詳細」をクリックすることで、先に進むリンクが表示されます。

Rclone(安全ではないページ)に移動します。

ログインすると、Rclone が Google アカウントへのアクセスを求めてきますので「続行」をクリックします。

完了画面になりますので、ブラウザを閉じてください。

コマンドプロンプトにトークンが表示されていますので、コピーします。

Windows 側で必要な作業は以上です。

再びターミナルに戻って VPS 側の続きを進めます。

ドライブを共有するか聞かれますが、バックアップを格納する目的なので No(n)を応答します。

設定内容の確認が表示されますので、間違いがなければ Yes(y)を押すと設定が保存されます。

Rclone のメニューに戻ったら Quit config(q)で抜けます。

とても長くなりましたが、以上で Google Drive との連携は完了です。

Google Drive にバックアップ実行

ちゃんと動くか、まずは手動でバックアップを行ってみます。

Google Drive をチェックしたところ、きちんとバックアップすることができました。

逆に Google Drive からバックアップをダウンロードする場合もテストしてみます。

Cron で自動遠隔バックアップ

スクリプトはいつもお世話になっているサイトからコピペさせてもらっています。

遠隔地バックアップ(Rclone) - AlmaLinuxで自宅サーバー構築
遠隔地バックアップ(Rclone)

ごみ箱をクリアする部分だけ、Google Drive では -q オプションが必要なので修正しました。

MariaDB のバックアップ用 Cron と連動するように設定します。

Cron ジョブを「&&」で繋げることで、1 つ目の処理(MariaDB のバックアップ)が正常に終了した場合に、次の処理(Google Drive にバックアップをコピー)を行うことができます。

連携が維持されている事を確認する

Rclone と Google Cloud の設定は、このページで紹介した方法で行えば問題ないことを確認しましたが、手順を間違うと 1 週間で Google の認証情報の有効期限が切れて、再度認証が必要になる場合があります。

8 日以降も自動でバックアップが取れているかを確認しておきましょう。

まとめ

以前(CentOS 7 の時代)は、Rclone と Google Drive の連携するのにここまで面倒な手続きは不要だっと思うのですが、いろいろ複雑になっていますね。

コメント

タイトルとURLをコピーしました