`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のデータベースをリストアする]]