Discourse のバックアップをさまざまなクラウドストレージプロバイダーと同期できるプラグイン があります。残念ながら、現時点では Dropbox や Google Drive には対応していません。それでも Dropbox や Google Drive にバックアップを保存したい場合は、以下の手順に従ってください。ここでは Dropbox を例に説明しますが、rclone がサポートする他のバックエンド でも同様に動作します。
免責事項: この手順は Ubuntu 16.04 でテスト済みであり、私自身は問題なく動作していますが、専門家ではありません。より良い方法があるかもしれません。ご指摘いただければ、この投稿を更新するのを喜んで対応します。
rclone のインストール
sudo curl https://rclone.org/install.sh | sudo bash
上記のコマンドが失敗した場合、解凍ツールのインストールを求められることがあります。
sudo apt-get install unzip
Dropbox へのアクセス権限の付与
ここが最も難しい部分です。rclone に Dropbox へのアクセスを許可するにはブラウザが必要ですが、VPS に SSH で接続している状態ではブラウザを使用するのが容易ではありません。そのため、以下の 2 段階で進めてください。
まず、サーバー上で以下のコマンドを実行します。
sudo rclone config
指示に従って進めてください。ある時点で以下のような質問が出ます。
Use auto config?
これには N と答えてください。
次に、認証トークンを取得するためにデスクトップマシンに切り替える必要があります。つまり、デスクトップマシンにも rclone をインストールする必要があります(Windows 用は Rclone downloads から入手できます)。その後、Remote Setup の手順に従ってください。
トークンを取得し、待機していた SSH プロンプトに貼り付けると、以下のように Dropbox 内の全ディレクトリの一覧を取得することで、正常に動作しているか確認できます。
rclone lsd drobo:
ここで drobo は、先に Dropbox に割り当てた名前です。
バックアップを Dropbox にコピー
バックアップファイルの場所を確認してください。通常は /var/discourse/shared/standalone/backups/default にあります。2 つのコンテナ構成 を使用している場合は、/var/discourse/shared/web-only/backups/default にある可能性が高いです。
バックアップを Dropbox のバックアップディレクトリにコピーするコマンドは以下の通りです。
sudo rclone copy /var/discourse/shared/standalone/backups/default --exclude tmp/ drobo:backups
Cron ジョブの設定でバックアップを毎日 Dropbox にコピー
毎日午後 6 時にバックアップをコピーするには、crontab に以下の行を追加してください。
crontab -e
そして、以下を追加します。
0 18 * * * rclone copy /var/discourse/shared/standalone/backups/default --exclude tmp/ drobo:backups
必要に応じてより頻繁に実行することもできます。新規ファイルのみがコピーされるため、問題ありません。
なお、copy オプションを使用すると、サーバー側のバックアップが削除されても Dropbox 側にはさらに多くのバックアップが追加され続けます。サーバー側と同じバックアップのみを保持したい場合は、copy の代わりに sync を使用してください。