【サーバー管理入門 第11回】データ消失の悪夢に備える。「tar」と「rsync」によるバックアップと復旧訓練

【サーバー管理入門 第11回】データ消失の悪夢に備える。「tar」と「rsync」によるバックアップと復旧訓練

こんにちは!「リナックス先生」です。
前回は、Cronを使ってDBバックアップを自動化しましたね。
コウ君、あれから毎日バックアップファイルは生成されている?

コウ君

はい! /backup/ ディレクトリに毎日ファイルが増えているのを確認しました!
これでいつサーバーが壊れても安心ですよね? 完璧ですよね?

リナックス先生

……甘いわね。
「バックアップは、リストア(復元)できて初めてバックアップと呼べる」のよ。
ファイルが壊れていないか確認した? そのファイルからどうやって元に戻すか手順書はある?
今回は、実際にシステムの一部を破壊して、そこから復旧させる「避難訓練」を行うわよ!

第11回となる今回は、サーバー運用における最後の砦、「バックアップと障害復旧」について解説します。
Linux標準の tar コマンドと、プロ御用達の同期ツール rsync の使い分け、そして現場で必ず意識すべき「3-2-1ルール」について学びましょう。

本講座のカリキュラム

  1. サーバー管理入門:RHEL系OSの選定理由とローカル仮想環境の構築
  2. 初期設定とセキュリティの要:SSH鍵認証、禁止設定、ユーザー管理の鉄則
  3. パッケージ管理の裏側:dnf/rpmの仕組みとリポジトリの依存関係解決
  4. ネットワーク設定の極意:nmcli、IPアドレス設計、DNSリゾルバの設定
  5. ストレージ管理とファイルシステム:LVMの概念、ディスク拡張、fstabの罠
  6. プロセスとサービス管理:systemd (systemctl) の仕組みとUnit定義ファイルの作成
  7. Webサーバー構築(Nginx):ハイパフォーマンスWebサーバーの導入と設定最適化
  8. データベース構築(MariaDB):インストール、初期セキュリティ、バックアップの基礎
  9. ログ管理とトラブルシュート:rsyslog、journalctl、ログローテートの設計
  10. 自動化の第一歩:Cronによる定期実行と管理用シェルスクリプトの作成
  11. 【今回】バックアップと障害復旧:tar/rsyncによるデータ保全とリカバリ手順
  12. 監視と運用設計:サーバーのリソース監視、死活監視、そしてプロの運用論

1. プロが守る「バックアップの3-2-1ルール」

コマンドを覚える前に、バックアップの基本戦略を理解しましょう。
米国の国土安全保障省なども推奨する、データ保護の鉄則「3-2-1ルール」です。

  • 3つのデータを持つ(本番データ1つ + バックアップ2つ)
  • 2種類の異なるメディアに保存する(サーバー内のディスク + 外部HDDやクラウドなど)
  • 1つは遠隔地(オフサイト)に置く(データセンターが火事になっても残るように)

サーバー内の別フォルダにコピーしただけでは、ディスクが物理的に故障した瞬間に「全滅」です。
今回は、サーバー内でのバックアップ(tar)と、外部への転送(rsync)の両方を学びます。

2. 「tar」コマンドによるアーカイブと圧縮

Linuxでバックアップといえば tar(ター) コマンドです。
複数のファイルを1つにまとめ(アーカイブ)、さらに gzip などで圧縮します。
Windowsでいう「zipファイルを作る」感覚に近いです。

バックアップ(圧縮)の基本コマンド

Webサイトのデータ(/usr/share/nginx/html)をバックアップしてみましょう。

# 書式:tar czvf [保存ファイル名] [バックアップ対象ディレクトリ]
[root@server01 ~]# tar czvf /backup/web_backup.tar.gz /usr/share/nginx/html

オプションの意味(暗記必須):

  • c (Create):新しく作る
  • z (gZip):gzip形式で圧縮する(サイズを小さくする)
  • v (Verbose):処理したファイル名を表示する
  • f (File):ファイル名を指定する

中身の確認(解凍せずに見る)

バックアップファイルの中身を確認するには t (List) を使います。

[root@server01 ~]# tar tvf /backup/web_backup.tar.gz

リストア(解凍)の基本コマンド

元に戻すには x (eXtract) を使います。

# カレントディレクトリに解凍される
[root@server01 ~]# cd /tmp
[root@server01 tmp]# tar xzvf /backup/web_backup.tar.gz

⚠️ プロの注意点:絶対パスの罠

tar でバックアップを取ると、デフォルトでは先頭の / (ルート) が削除されます。
これは解凍時に「誤ってシステム領域を上書きしないため」の安全策です。
意図せず /etc/ などを上書きしてOSを破壊しないよう、解凍先ディレクトリ(-C オプションなど)には十分注意してください。

3. 最強の同期ツール「rsync」

tar は「その時点のスナップショット」を取るのに適していますが、ファイル数が数百万個ある場合、毎回全部固めるのは時間がかかりすぎます。
そこで登場するのが rsync(アールシンク) です。

rsyncの凄いところ

  • 差分転送: 「変更があったファイルだけ」を転送するので爆速。
  • 属性維持: パーミッション、所有者、タイムスタンプを完全にコピーできる。
  • SSH転送: ネットワーク越しの別サーバーへ安全にバックアップできる。

基本コマンド(ローカルバックアップ)

/var/www/ の中身を /backup/www_mirror/ に同期します。

# 書式:rsync -avz [コピー元]/ [コピー先]/
[root@server01 ~]# rsync -avz /usr/share/nginx/html/ /backup/html_mirror/

オプションの意味:

  • a (Archive):アーカイブモード(属性維持、再帰コピーなど全部入り)
  • v (Verbose):詳細表示
  • z (Compress):転送時にデータを圧縮する(ネットワーク越しの場合に有効)

【重要】–delete オプションの功罪

rsync には --delete という強力なオプションがあります。
これは「コピー元で消されたファイルは、コピー先でも消す」という完全同期オプションです。

# 完全同期(ミラーリング)
[root@server01 ~]# rsync -avz --delete /usr/share/nginx/html/ /backup/html_mirror/

これにより、バックアップ先が常に最新状態になります。
しかし、「間違ってファイルを消した操作も同期される」ため、誤操作の救済には使えない諸刃の剣です。
用途に合わせて使い分けましょう。

4. 実践:障害発生とリストア訓練

それでは、心臓に悪い訓練を始めます。
「誤ってWebサイトのデータを全消去してしまった」というシナリオで復旧を行います。
※ 必ずVirtualBoxなどの実験環境で行ってください!

Step 1: バックアップの取得

まず、正常な状態をバックアップします。

[root@server01 ~]# tar czvf /root/web_full_backup.tar.gz /usr/share/nginx/html

Step 2: 障害発生(データ消失)

Web公開ディレクトリの中身を削除します。
※注意して入力してください

[root@server01 ~]# rm -rf /usr/share/nginx/html/*

この状態でブラウザからアクセスしてください。
「403 Forbidden」または「404 Not Found」になり、サイトが見えなくなったはずです。
これが現場なら顔面蒼白の瞬間です。

Step 3: リストア(復旧)

焦らずバックアップから復元します。
今回はルートディレクトリ / に移動して解凍します(tar作成時に絶対パスで指定しているため)。

[root@server01 ~]# cd /
[root@server01 /]# tar xzvf /root/web_full_backup.tar.gz

Step 4: 確認

ファイルが戻っているか確認します。

[root@server01 /]# ls -l /usr/share/nginx/html/

ブラウザで再度アクセスし、ページが表示されれば復旧成功です!

5. 外部サーバーへの転送 (Remote Backup)

サーバーのディスク自体が壊れた場合に備え、rsyncを使って別のサーバー(VPSなど)へデータを飛ばす方法を紹介します。

# 書式:rsync [オプション] [コピー元] [ユーザー]@[相手先IP]:[コピー先パス]
[root@server01 ~]# rsync -avz -e ssh /backup/ user@192.168.1.50:/home/user/backup/

これを第10回で学んだ Cron に登録し、SSH鍵認証(パスワードなしログイン)を設定しておけば、「毎晩自動的に遠隔地のサーバーへデータを退避する」という、プロレベルの堅牢なバックアップシステムが完成します。

次回予告:サーバー監視と運用の真髄

今回は、サーバー管理者の命綱であるバックアップと、冷や汗もののリストア訓練を行いました。
「tar で固めて、rsync で飛ばす」。この基本パターンは、どんな現場でも通用する最強の武器です。

さて、全12回の本講座もいよいよ次回が最終回です。
最後は「監視(モニタリング)」です。
「サーバーが落ちたことに、ユーザーからのクレームで気づく」なんて三流の仕事をしないために。
サーバーのリソース(CPU、メモリ)を監視し、死活監視を行うためのプロの運用論を解説します。お楽しみに!

リナックス先生

バックアップ先として一番手軽なのは、やっぱりVPSね。
自宅サーバーのデータをクラウド上のVPSに同期しておけば、家が停電してもデータは残る。
逆にVPSのデータを自宅に引き上げるのもアリよ。
「3-2-1ルール」を実現するために、サブ機としてのVPS活用はとても賢い選択肢よ。

バックアップ用のセカンダリサーバーとして、あるいは本番運用のメインサーバーとして。
コストパフォーマンスに優れ、rsyncなどのツールも自由に使える推奨VPSを以下に紹介します。
データ保全のために、物理的に離れた場所にサーバーを持っておくことを強くお勧めします。

▼スクリプトの実験場に最適!推奨VPS

【2026年最新】Linuxサーバー構築におすすめのVPS比較3選!現役エンジニアが速度とコスパで厳選
Linuxの勉強、まだ「自分のPC」でやって消耗していませんか?「Linuxを覚えたいけど、環境構築でエラーが出て先に進めない…」「VirtualBoxを入れたらパソコンが重くなった…」これは、Linux学習を始める9割の人がぶつかる壁です...

コメント