【Firefish/Misskey】バックアップしたデータベースをR2に転送する

aws-cliでR2にバックできると聞いて!!!八丈島より泳いで参った!!!

注)ヒツジは泳げません

要は下記の記事のR2版です。

目次

大まかな手順

  1. R2バケットの作成
  2. aws-cliのインストール(前記事でインストールしてたら不要)
  3. credentialsの記入or書き換え
  4. bashファイルの作成or変更

詳細な流れ

1.R2バケットの作成~API取得

バケット作成

Cloudflareにログイン後、左側のメニューから「R2>概要」に移動し、画面中央にある「バケットを作成する」ボタンを押してバケット名(名前)を入力します。

他の設定は変更する必要はありません。

API取得

バケットを作成したら、概要のページに戻ります。右側のメニューから「R2 APIトークンの管理」をクリックし、右上の「APIトークンを作成する」を選択し、以下のように設定を行います。

  • トークン名:APIの名前。自分が識別できる名前を入力
  • 権限:オブジェクトの読み取りと書き込み
  • バケットの指定:特定のバケットのみに適用>2で作ったバケット名を選択

設定が終わったら右下の「APIトークンを作成する」をクリックし、次のページで表示されるAPIをメモしておきます。

<注意>
初回しか表示されないので、必ずコピーしてメモ帳などに保存しておきましょう!

2.aws-cliのインストール(前記事でインストールしてたら不要)

rootユーザーでインストール(本来ならmisskey/calckeyユーザーでやるのがいいんだけどね)

Linux での AWS CLI バージョン 1 のインストール、更新、アンインストール AWS Command Line Interface

3.credentialsの記入or書き換え

新規作成の場合

ホームディレクトリに戻っていることを確認、(root@aaa:~$)の~の部分が~だけになってればOKです。ディレクトリー.awsを作成、してVimで.aws/credentialsを編集します。

$ mkdir .aws
$ vi .aws/credentials

credentialsの内容はこんな感じで記入して保存します。

[default]
aws_access_key_id=(アクセスキー)
aws_secret_access_key=(シークレットキー)
region = auto

書き換えの場合

AWSからの切り替えの場合、すでにファイルが作成されていると思うので、一度バックアップを取ります

$ cd .aws
$ cp credentials credentials.old

credentialsが現行の設定ファイル、credentials.oldがバックアップファイルになります。このまま、vi credentialsで編集、内容は上記の新規作成と同じ要領で記載します。

4.bashファイルの作成or変更

次にバックアップスクリプトを作成・変更します。/usr/local/binに保存・vi backup.shでファイルを作成しています。

$ cd /usr/local/bin
$ vi backup.sh

backup.shの中身はこんな感じに記載します。

#!/bin/bash

# 時刻取得
TIME=$(date +"%Y%m%d%H%M")

# バックアップ開始
su - postgres << BASH
    echo "Backup start."
    # バックアップディレクトリに移動
    cd /var/backup
    # バックアップファイル作成
    pg_dumpall | gzip -c > firefish$TIME-backup.gz
    # パーミッション・権限変更
exit
    chmod 744 firefish$TIME-backup.gz
BASH

# rootユーザーに変更
su - root << BASH
    echo "Send backup file."
    # S3に転送
    ~/.local/bin/aws s3 cp /var/backup/firefish$TIME-backup.gz s3://(バケット名)/backup/firefish$TIME-backup.gz --endpoint-url (エンドポイント)
    echo "Backup complete."
BASH

S3からの変更点は22行目のみ。バケット名の変更とエンドポイントオプションを追加します。変更が終わったらパーミッションを755に変更(初回のみ)し、bashファイルを実行してみます。

$ chmod 755 backup.sh
$ bash backup.sh

無事に送信できたら完了です、お疲れさまでした。

補足:cronを設定する

【Firefish/Misskey】バックアップしたデータベースをS3に転送する | ほしぱそ。

やってることは同じなのでここ参照して(適当)

参考URL

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次