> [!failure] > aws-cli がVer2・Ubuntu24になったため、動かなくなりました。 > 現在修正中…… `aws-cli`でR2にバックアップできるんですね!ということで備忘録です。(要は下記記事のR2版) - [[Mastodon・MisskeyのデータベースをS3にバックアップする]] ## 大まかな手順 1. R2バケットの作成~API取得 2. aws-cliのインストール(前記事でインストールしてたら不要) 3. credentialsの記入or書き換え 4. bashファイルの作成or変更 ## 詳細な流れ ### 1.R2バケットの作成~API取得 #### バケット作成 Cloudflareにログイン後、左側のメニューから「R2>概要」に移動し、画面中央にある「バケットを作成する」ボタンを押してバケット名(名前)を入力します。他の設定を変更する必要はありません。 #### API取得 バケットを作成したら、概要のページに戻ります。右側のメニューから「R2 APIトークンの管理」をクリックし、右上の「APIトークンを作成する」を選択し、以下のように設定を行います。 ##### 設定項目 - トークン名:APIの名前。自分が識別できる名前を入力 - 権限:オブジェクトの読み取りと書き込み - バケットの指定:特定のバケットのみに適用>2で作ったバケット名を選択 設定が終わったら右下の「APIトークンを作成する」をクリックし、次のページで表示されるAPIをメモしておきます。 > [!warning] > 初回しか表示されないので、必ずコピーしてメモ帳などに保存しておきましょう! ### 2.aws-cliのインストール(前記事でインストールしてたら不要) rootユーザーでインストール(本来ならmastodon/misskeyユーザーでやるのがいいんだけどね) - [Linux での AWS CLI バージョン 1 のインストール、更新、アンインストール AWS Command Line Interface](https://docs.aws.amazon.com/ja_jp/cli/v1/userguide/install-linux.html#install-linux-pip) ### 3.credentialsの記入or書き換え #### 新規作成の場合 ホームディレクトリに戻っていることを確認、(root@aaa:~$)の`~`の部分が`~`だけになってればOKです。ディレクトリー`.aws`を作成、してNanoで`.aws/credentials`を編集します。 ``` $ mkdir .aws $ nano .aws/credentials ``` `credentials`の内容はこんな感じで記入して保存します。 ``` [default] aws_access_key_id=(アクセスキー) aws_secret_access_key=(シークレットキー) region = auto ``` #### 書き換えの場合 AWSからの切り替えの場合、すでにファイルが作成されていると思うので、一度バックアップを取ります ``` $ cd .aws $ cp credentials credentials.old ``` `credentials`が現行の設定ファイル、`credentials.old`がバックアップファイルになります。このまま、`nano credentials`で編集、内容は上記の新規作成と同じ要領で記載します。 ### 4.bashファイルの作成or変更 次にバックアップスクリプトを作成・変更します。`/usr/local/bin`に保存・`nano backup.sh`でファイルを作成しています。 ``` $ cd /usr/local/bin $ nano backup.sh ``` `backup.sh`の中身はこんな感じに記載します。 ``` sh #!/bin/bash set -e # エラー時にスクリプトを終了 set -o pipefail # パイプ処理のエラーを検出 # 時刻取得 TIME=$(date +"%Y%m%d%H%M") # バックアップディレクトリ BACKUP_DIR="/var/backup" BACKUP_FILE="mastodon-${TIME}-backup.gz" R2_BUCKET="s3://<バケット名>/backup" R2_ENDPOINT="<エンドポイント>" # PostgreSQLバックアップ echo "Starting backup..." sudo -u postgres bash -c " mkdir -p $BACKUP_DIR cd $BACKUP_DIR pg_dumpall | gzip -c > $BACKUP_FILE " chmod 600 "$BACKUP_DIR/$BACKUP_FILE" # S3転送 echo "Uploading backup to S3..." ~/.local/bin/aws s3 cp "$BACKUP_DIR/$BACKUP_FILE" "$R2_BUCKET" --endpoint-url "$R2_ENDPOINT" echo "Backup complete." ``` **2024/12/05:bachup.shの中身を(ChatGPTが)変えました** 設定ファイルにバケット名とエンドポイントを追加して保存します。変更が終わったらパーミッションを755に変更(初回のみ)し、bashファイルを実行してみます。 ``` $ chmod 755 backup.sh $ bash backup.sh ``` 無事に送信できたら完了です、お疲れさまでした。 ## 補足:cronを設定する - [[Mastodon・MisskeyのデータベースをS3にバックアップする#4.cronを設定する]] やってることは同じなのでここ参照してください。(適当) ## 関連記事 - [[Mastodon・Misskeyのデータベースをバックアップする]] - [[Mastodon・MisskeyのデータベースをS3にバックアップする]] - [[Mastodon・Misskeyのデータベースをリストアする]] - [[Mastodon(kmyblue)のアップデートをおさらいする]] - [[Mastodonの「.env.production」ファイルをR2に保存する]]