自宅サーバーのバックアップを3-2-1にする:NAS内で完結させずクラウドへ外部保管を足す手順

Photo: Nothing Ahead / Pexels
先に結論です。自宅サーバーのバックアップを3-2-1にするなら、足りないのはほぼ「家の外にある1つ」です。
- 原本(サーバー・NAS)と、家の中のバックアップ(USB HDD や別の NAS)は、多くの人がすでに持っています
- 外部保管は、写真や書類など取り戻せないデータだけに絞ってクラウドへ送れば、月数百円から始められます
- 送る道具は restic、送り先は Backblaze B2 が、料金と手間の釣り合いが良いと私は考えています
- 暗号化のパスワードとクラウドの鍵は、サーバーの外に保管します。家ごと失ったときにこれがないと戻せません
3-2-1 を自宅サーバーに当てはめる
3-2-1 は「データを3つ持つ」「2種類の別の媒体に置く」「1つは別の場所に置く」というバックアップの原則です。最近は、書き換えられない(またはつながっていない)コピーを1つ、復元確認でエラー0件、を足した 3-2-1-1-0 という言い方も広まっています。
自宅サーバーでよく見る構成に当てはめると、こうなります。
| 構成 | コピーの数 | 足りないもの |
|---|---|---|
| NAS の RAID1 だけ | 1(RAID は複製ではない) | バックアップそのもの |
| NAS + 同じ NAS 内のスナップショット | 1 | 別の機器、家の外 |
| NAS + USB HDD へ定期コピー | 2 | 家の外 |
| NAS + USB HDD + クラウド | 3 | なし |
RAID は「ディスクが1台壊れても止まらない」ための仕組みで、誤って消したファイルやランサムウェアで暗号化されたファイルは、両方のディスクで同時に消えます。スナップショットは誤削除には強いものの、NAS 本体が壊れたり盗まれたりすれば一緒に失います。
家の中のバックアップ先がまだない方は、まずUSB 接続の外付け HDD を1台足すところからで十分です。そのうえで、火事・水害・盗難に備えるのが今回の外部保管です。
外部保管先を選ぶ:何を送るかで料金が決まる
クラウドの料金は容量で決まるので、先に送るものを絞るのが一番効きます。
- 送る:家族の写真・動画、スキャンした書類、パスワード管理(Vaultwarden など)のデータ、docker-compose.yml や設定ファイル
- 送らない:録画やメディアサーバーの動画など、もう一度手に入るもの。OS や Docker イメージ
写真 500GB だけなら、次の表の B2 で月3.5ドル前後の計算です。
| 保管先 | 料金の目安(2026年10月時点) | 注意点 |
|---|---|---|
| Backblaze B2 | 1TB あたり月6.95ドル、10GB まで無料 | ダウンロードは保存量の3倍まで無料 |
| Wasabi | 1TB あたり月7.99ドルから | 最低利用量と90日の最低保存期間があるとされています |
| Cloudflare R2 | 1GB あたり月0.015ドル、10GB まで無料 | ダウンロード無料。容量単価は高め |
| Synology C2 | 1TB で月7.99ドル(年払い79.99ドル)とされています | 2026年6月に料金体系が変わっています |
B2 は2026年5月に1TB あたり月6.95ドルへ改定し、API の呼び出し料金をなくしたとされています。ドル建てなので、為替で円の負担は上下します。
Synology の NAS なら、純正の Hyper Backup で C2 や S3 互換のクラウド(B2 も可)へ送れます。設定時にクライアント側暗号化を有効にし、そのパスワードを控えてください。Proxmox の VM なら、Proxmox Backup Server 4.2 で S3 互換ストレージをデータストアにする機能が正式サポートになったとされています。
restic で B2 へ送る手順(Linux サーバー・OpenMediaVault)
Ubuntu Server や OpenMediaVault(中身は Debian)なら、restic を使うのが簡単です。暗号化と重複排除をしてから送るので、2回目以降は変わった分しか転送しません。
1. B2 でバケットと鍵を作る
B2 の管理画面でバケットを「非公開」で作り、アプリケーションキーをそのバケットだけに限定して発行します。マスターキーは S3 互換 API では使えません。表示される keyID と applicationKey、バケットの Endpoint(s3.us-west-004.backblazeb2.com のような形)を控えます。
restic の公式ドキュメントでは、B2 は専用の接続方式より S3 互換 API で使うことが推奨されています。
2. 鍵をファイルにまとめる
sudo apt install restic
sudo nano /root/restic-b2.env
sudo chmod 600 /root/restic-b2.env
中身は次の4行です。
export AWS_ACCESS_KEY_ID=keyIDの値
export AWS_SECRET_ACCESS_KEY=applicationKeyの値
export RESTIC_REPOSITORY=s3:https://s3.us-west-004.backblazeb2.com/バケット名
export RESTIC_PASSWORD=長いパスワード
3. 初回の保存と、世代の整理
sudo -i
. /root/restic-b2.env
restic init
restic backup /srv/photos /srv/documents /opt/compose
restic snapshots
古い世代は forget で間引きます。次の例は「日ごと7世代・週ごと4世代・月ごと6世代」を残す設定です。
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
4. 毎晩動かす
root の crontab(crontab -e)に1行足します。
0 3 * * * . /root/restic-b2.env && restic backup /srv/photos /srv/documents /opt/compose --quiet && restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune --quiet
コマンドに慣れていなければ、restic を Web 画面から扱える Backrest を Docker で動かす方法もあります。予定の設定や復元を画面から操作できます。
B2 は古い版のファイルを残す設定が既定で、restic のドキュメントでは、バケットのライフサイクルを「最新版のみ保持」にすることが推奨されています。
送りっぱなしにしない:鍵の保管と復元確認
外部保管で一番多い失敗は、戻すときに必要なものがサーバーの中にしかないことです。
- restic のパスワードを失うと、クラウドのデータは誰にも復号できません。パスワード管理アプリと紙の両方に控えます
- B2 のログイン情報と、keyID・applicationKey も同じ場所に控えます。サーバーごと失ったら、別の PC に restic を入れて戻すことになります
さらに、サーバーが乗っ取られたときにバックアップまで消される心配があります。削除権限のないキーで書き込み、古い世代の削除は別の PC から行う構成や、オブジェクトロックで一定期間消せなくする方法も紹介されています。ただし restic と組み合わせるには追加の工夫が要るとされているので、最初は「バケット限定のキー」と「パスワードの別保管」から始めれば十分だと考えています。
最後に、本当に戻せるかを確かめます。月1回、一部を別の場所へ戻して開けるか見ます。
restic restore latest --target /tmp/restore-test --include /srv/documents
restic check --read-data-subset=5%
check --read-data-subset=5% は、保存データの5%を実際に読み出して壊れていないかを確認します。B2 はダウンロードが保存量の3倍まで無料なので、この程度の確認で料金はほぼかかりません。
まとめ
- RAID とスナップショットは同じ箱の中。3-2-1 で足りないのは、たいてい「家の外の1つ」
- クラウドへ送るのは取り戻せないデータだけに絞る。写真 500GB なら B2 で月3.5ドル前後
- Linux サーバーなら restic + B2(S3 互換 API)。Synology は Hyper Backup、Proxmox は PBS の S3 データストアも選択肢
- 鍵はバケット限定にし、restic のパスワードとクラウドの鍵はサーバーの外に控える
- 月1回、
restic restoreとrestic checkで戻せることを確かめる
運営者が作った Excel テンプレートを BOOTH で配布しています。IT 資産管理台帳(無料 Lite 版あり) / IT 資格の学習管理シート


