> [!failure]
> aws-cli がVer2・Ubuntu24になったため、動かなくなりました。
> 現在修正中……
Mastodonの`.env.production`のバックアップは必ずしようね!ヒツジとの約束だよ!
## なんでしなくちゃいけないの?
サーバーやDBのシークレットキーが含まれていて、これをなくすと最悪復旧できなくなるから。今後MastodonはDBを暗号化する予定で、その解読のキーを`.env`に登録するわけです。
つまり、いくらDBのバックアップを取っていても、解読キーが書いてある設定ファイル(`.env`)がなければデータを読み込めない。そうなったら、新規ドメインでまっさらな状態で運用していくことになります。そうならないためにも、バックアップはしておきましょうね。
## 大まかな流れ
1. R2に転送するスクリプトを書く
2. cronで定期的に送る
2は [[Mastodon・MisskeyのデータベースをS3にバックアップする#4.cronを設定する]] に書いてあるので省略。もしR2以外のAWS互換オブジェクトストレージに置きたかったら、適当に変えてください。
### R2に転送するスクリプトを書く
```
$ cd /usr/local/bin
$ nano env-backup.sh
```
例のごとく、`/usr/local/bin`にスクリプトを置いていきます。
```sh
#!/bin/bash
# 時刻取得
TIME=$(date +"%Y%m%d%H%M")
# バックアップ開始
su - mastodon << BASH
echo "Backup start."
# バックアップディレクトリに移動
cp live/.env.production /var/backup gzip -c > env-$TIME-backup.gz
echo "Coppyed."
# パーミッション・権限変更
exit
chmod 744 env-$TIME-backup.gz
BASH
# rootユーザーに変更
su - root << BASH
echo "Send backup file."
# S3に転送
~/.local/bin/aws s3 cp /var/backup/env-$TIME-backup.gz s3://<バケット名>/backup/env/env-$TIME-backup.gz --endpoint-url <エンドポイント>
echo "Backup complete."
BASH
```
## 関連リンク
- [[Mastodon・MisskeyのデータベースをR2にバックアップする]]
## 参考サイト