こんにちは、てつです!
「低スペックPCでも止まらない!」自作サーバー構築シリーズ。
前回の運用環境整備に続き、今回は「データの安全性」を究極まで高める、不沈要塞化の最終ステップに挑みます。
自宅サーバー(中古PC)運用で最も怖いのは、ハードウェアの物理的な故障や、SDカードの寿命によるデータ喪失です。
これを防ぐため、IT業界の標準である「AWS S3」をバックアップ先に採用し、プロの現場でも鉄則とされる「3-2-1バックアップルール」を個人環境で実現する方法を、ステップバイステップで徹底解説します。
3-2-1バックアップルールとは?
バックアップの鉄則「3つのコピーを持ち、2つの異なるメディアに保存し、1つは遠隔地(クラウド)に置く」という考え方です。
関連記事

AWS S3バックアップ実装のロジック
1.AWS側での準備(バケットと鍵の作成): AWSの管理画面(マネジメントコンソール)で、データを保存する「箱(S3バケット)」を作り、プログラムからアクセスするための「専用の鍵(IAMユーザーのアクセスキー)」を発行します。
2.AWS CLIの導入: サーバー(MX Linux)からAWSを直接操作するための公式ツールをインストールします。
3.認証設定: サーバーに取得した「鍵」を登録し、安全な通信経路を確立します。
4.スクリプトの拡張: 既存の maintenance.sh に、S3へデータを同期(Sync)するコマンドを1行追記します。
AWS側での準備
S3バケットの作成
バックアップファイルを物理的に保存する場所を確保します。
1.AWSコンソールで「S3」を検索して開きます。
2.「バケットを作成」をクリックします。
3.バケット名: 世界で唯一の名前を付けます(例:プロジェクト名-backup-2026)。
4.リージョン: 「アジアパシフィック (東京) ap-northeast-1」を選択します。
- 1行解説: リージョンとはデータの保存場所のことで、自分の居住地に近い東京を選ぶのが一般的です。
5.以下の項目をチェックして「バケットを作成」をクリックして完了です。
- パブリックアクセスのブロック: 常に「オン(チェック入り)」にしておくべきです。外すとバックアップデータが公開されるリスクがあります。
- バケットバージョニング: 可能なら「有効にする」ことが推奨されています。
- デフォルト暗号化: 「サーバー側の暗号化 (SSE-S3)」が選ばれていれば、そのままで大丈夫です。
IAMユーザーの作成
プログラム(スクリプト)がAWSにログインするための「専用アカウント」を作ります。
1.「IAM」を検索して開き、左メニューの「ユーザー」→「ユーザーを作成」をクリックします。
2.ユーザー名: s3-backup-user など、用途がわかる名前にします。
3.「次へ」進み、「許可を設定」画面へ。
- 1行解説: ここで「誰が何をしていいか」というルール(ポリシー)を決めます。
権限(ポリシー)の付与
作成したユーザーに「S3を触る許可」を与えます。
1.「ポリシーを直接アタッチする」を選択します。
2.検索窓に「S3Full」と入力し、AmazonS3FullAccess にチェックを入れます。
- 1行解説: このポリシーにより、ユーザーはS3バケットへの読み書きが許可されます。
3.「ユーザーを作成」をクリックします。
アクセスキーの発行
サーバーから接続する際に必要な「ID」と「パスワード」を取得します。
1.作成したユーザー(例: s3-backup-user) をクリックして詳細画面へ。
2.「セキュリティ認証情報」タブをクリックし、下へスクロールして「アクセスキーを作成」を押します。
3.ユースケースで「Command Line Interface (CLI)」を選択し、次へ。
4.作成後、「アクセスキー」と「シークレットアクセスキー」が表示されます。
- 1行解説: これは一度しか表示されません。CSVファイルをダウンロードし、厳重に管理してください。
サーバー側での具体的な設定ステップ
ここからは、AWSの画面で「S3バケット」と「IAMアクセスキー」が用意できた前提で、サーバー側の作業を解説します。
AWS CLIのインストール
SSH接続したサーバーのターミナルで以下のコマンドを実行し、AWSの様々なサービスを、ブラウザからではなく黒い画面(ターミナル)から直接操作するための公式ツールを導入します
Bash
sudo apt update && sudo apt install -y awscli
認証情報(鍵)の登録
以下のコマンドを打つと、対話形式で4つの質問が順番に表示されます。
Bash
sudo aws configure
AWSにログインするための「アクセスキー」「シークレットキー」「メインで使う地域(例:東京なら ap-northeast-1)」「出力形式(json)」をサーバーに記憶させます。
maintenance.sh への追記
前回作ったスクリプト(maintenance.sh )を開き、一番最後の行に以下を追記します。
nano /mnt/sdcard/プロジェクト名/scripts/maintenance.sh
# --- AWS S3への同期セクション ---
# ローカルのバックアップフォルダとS3バケットの内容を完全に同期します
aws s3 sync $BACKUP_DIR s3://作成したバケット名/backups/ --delete
スクリプトの編集が終わったらCtrl+O,Enter,Ctrl+Xでエディタを終了しましょう。
最終確認とテスト実行
以下のコマンドをターミナルで実行してください。
sudo /mnt/sdcard/プロジェクト名/scripts/maintenance.sh
【注目すべきポイント】
- 前半のDockerの停止・再起動・ローカルバックアップは前回通り進みます。
- 一番最後に追加したAWSコマンドが走る際、画面に
upload: ...というメッセージが流れていけば成功です。
エラーが発生した場合の切り分け(トラブルシューティング)
もし最後の同期処理でエラーが出た場合は、以下の2点を確認します。
ここまで問題なく実行でき、バックアップファイルが確認出来たら完璧です!
まとめ
お疲れ様でした!
これで、あなたのサーバーは「SDカード(作業用)」「PC本体ストレージ(一時保存)」「AWSクラウド(長期保管)」という3層の守りを手に入れました。
たとえ明日、中古PCが物理的に壊れたとしても、AWSにデータがある限り、数分でブログを元の状態に復元することが可能です。
守りの基盤が完璧に整った今、次はいよいよAIツール開発やコンテンツ作成といった「攻め」のフェーズへと進んでいきましょう!

コメント