`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
# 時刻取得
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を設定する
- [[Mastodon・MisskeyのデータベースをS3にバックアップする#4.cronを設定する]]
やってることは同じなのでここ参照してください。(適当)
## 関連記事
- [[Mastodon・Misskeyのデータベースをバックアップする]]
- [[Mastodon・MisskeyのデータベースをS3にバックアップする]]
- [[Mastodon・Misskeyのデータベースをリストアする]]