メールリンクから `wget` でバックアップをダウンロードする

熟練したシステム管理者にとって、大容量ファイルの移動には rsyncscp といったツールが一般的ですが、大容量のバックアップファイルを取得したいホストに SSH アクセスがない場合もあります。

バックアップファイルには機密情報が含まれるため、Discourse にはセキュリティ機能が備わっており、不正な人物がバックアップを取得することは極めて困難になっています。ダウンロードリンクはメールで取得し、そのリンクを要求したユーザーとしてログインして使用する必要があります。Web ブラウザでデータをダウンロードしたい場合は非常に簡単ですが、そのバックアップをインターネット上の別のサーバーに移動させたい場合、一般的な家庭用インターネット回線では非常に手間がかかります。私の自宅のインターネット回線では、2.3 GB のファイルのアップロードに 20 分以上を要します。ここでは 12 GB のファイルの場合、約 2 時間かかることになります。

以下は、wget を通じて Discourse サイトからバックアップを取得できるリンクを取得する方法です。

まず、通常通りダウンロードを開始し、Chrome のダウンロードページ(chrome://downloads/)を開きます。URL を右クリックしてコピーしてください。

その後、ファイルを保存したいマシン上のシェルで、その URL を wget リクエストに貼り付けます。& 文字が問題を引き起こす可能性があるため、必ず引用符で囲んでください。また、バックアップファイルの元のファイル名を維持する必要があります。リクエストは以下のようになります。

wget --show-progress "https://bucket-name.s3.us-west-2.amazonaws.com/backups/xyz/multisitename/discourse-2020-11-19-001538-v20201116132948.tar.gz?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAWWK5WHOFJ%2F20201119%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20201119T013442Z&X-Amz-Expires=300&X-Amz-SignedHeaders=host&X-Amz-Signature=1753b97a8aaf6953c89aa28628b8db" -O discourse-2020-11-19-001538-v20201116132948.tar.gz

-O filename を省略することもできますが、その場合はダウンロード後にファイル名を変更してください(デフォルトでは完全な URL がファイル名になります)。URL には有効期限があるため、サーバーに取得する準備ができたらダウンロードを開始する必要があります。

その後、ファイルを /var/discourse/shared/standalone/backups/default に移動し、Web インターフェースから、または以下のコマンドで復元できます。

cd /var/discourse
./launcher enter app
discourse enable_restore
discourse restore

上記の最終コマンドは利用可能なバックアップの一覧を表示します。正しいものを選択してコピー&ペーストすることで、復元を開始できます。

「いいね!」 14

残念ながら、これはS3を使用するサイト以外では機能しないようです。

うまくいくと思います。

「いいね!」 1

これは機能しないと思います。S3はURL内のX-Amz-Signatureパラメータを介してIDを認証するのに対し、Discourseから直接ダウンロードするにはクッキーベースの認証が必要です。単にURLをwgetにコピーするだけでは認証には不十分です。

「いいね!」 1

ふむ。それは正しいかもしれません。おそらく、S3経由(SSHアクセスがないCDCKサイトなど)でしかやったことがないのかもしれません。