【サーバー管理入門 第11回】データ消失の悪夢に備える。「tar」と「rsync」によるバックアップと復旧訓練
こんにちは!「リナックス先生」です。
前回は、Cronを使ってDBバックアップを自動化しましたね。
コウ君、あれから毎日バックアップファイルは生成されている?
はい! /backup/ ディレクトリに毎日ファイルが増えているのを確認しました!
これでいつサーバーが壊れても安心ですよね? 完璧ですよね?
……甘いわね。
「バックアップは、リストア(復元)できて初めてバックアップと呼べる」のよ。
ファイルが壊れていないか確認した? そのファイルからどうやって元に戻すか手順書はある?
今回は、実際にシステムの一部を破壊して、そこから復旧させる「避難訓練」を行うわよ!
第11回となる今回は、サーバー運用における最後の砦、「バックアップと障害復旧」について解説します。
Linux標準の tar コマンドと、プロ御用達の同期ツール rsync の使い分け、そして現場で必ず意識すべき「3-2-1ルール」について学びましょう。
本講座のカリキュラム
- サーバー管理入門:RHEL系OSの選定理由とローカル仮想環境の構築
- 初期設定とセキュリティの要:SSH鍵認証、禁止設定、ユーザー管理の鉄則
- パッケージ管理の裏側:dnf/rpmの仕組みとリポジトリの依存関係解決
- ネットワーク設定の極意:nmcli、IPアドレス設計、DNSリゾルバの設定
- ストレージ管理とファイルシステム:LVMの概念、ディスク拡張、fstabの罠
- プロセスとサービス管理:systemd (systemctl) の仕組みとUnit定義ファイルの作成
- Webサーバー構築(Nginx):ハイパフォーマンスWebサーバーの導入と設定最適化
- データベース構築(MariaDB):インストール、初期セキュリティ、バックアップの基礎
- ログ管理とトラブルシュート:rsyslog、journalctl、ログローテートの設計
- 自動化の第一歩:Cronによる定期実行と管理用シェルスクリプトの作成
- 【今回】バックアップと障害復旧:tar/rsyncによるデータ保全とリカバリ手順
- 監視と運用設計:サーバーのリソース監視、死活監視、そしてプロの運用論
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



コメント