Linuxサーバーのバックアップを「あとでやろう」と先送りしていた自分が障害で学んだこと|現役講師が語るバックアップ戦略の本質

HOMEリナックスマスター.JP 公式ブログLinux学習ガイド > Linuxサーバーのバックアップを「あとでやろう」と先送りしていた自分が障害で学んだこと|現役講師が語るバックアップ戦略の本質
宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
「バックアップはちゃんと取れているはずだった」

そう思っていたサーバーが障害で落ちた時、最後にバックアップが成功していたのは2週間前だったことがあります。

この記事では、バックアップを後回しにしてきた経験から、現役講師として3,100名以上を指導してきた中で伝え続けている「バックアップの本質的な考え方」をお伝えします。rsyncの使い方を調べる前に、まず「なぜ・いつ・何を」を整理してください。

この記事のポイント

・バックアップの失敗は「設定がない」より「検証していない」が原因になる
・「何をいつまでに戻せるか」が設計のスタート地点になる
・現場では「3-2-1ルール」が最低ラインとして使われている
・バックアップはスクリプト化して自動実行が基本


Linuxサーバーのバックアップを「あとでやろう」と先送りしていた自分が障害で学んだこと|現役講師が語るバックアップ戦略の本質
「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

「バックアップはある」と「復元できる」は別物

SE時代の2003年頃、私が担当していたファイルサーバーで障害が起きたことがあります。

その時、上司から「バックアップはどうなっている」と聞かれ、「テープバックアップを毎日取っています」と答えました。

ところがいざ復元しようとしたところ、テープが読み込めない状態になっていました。
バックアップのジョブは毎日実行されていたのですが、テープが物理的に劣化していて、実際には数ヶ月分のデータが正常に書き込まれていなかったのです。

当時の上司の言葉は今でも忘れられません。

「バックアップがあるかどうかじゃなくて、復元できるかどうかが問題だ」

その時はよく分かりませんでした。でも今は分かります。
バックアップはジョブが動いているだけでは意味がない。
定期的にリストアのテストをしていなければ、「バックアップがある」という事実に何の保証もないのです。

バックアップ設計の前に整理すべき3つの問い

1. 何を守るか

バックアップ対象を「全部」にするのは現実的ではありません。

容量・コスト・時間のいずれかが必ず制約になります。
現場では「失ったら業務が止まるもの」を優先して対象に含めます。

DBデータ:顧客情報・トランザクションが含まれるものは最優先
設定ファイル:/etc配下の変更履歴が消えると再構築コストが大きい
アプリケーションコード:Gitがあれば優先度は下げられる
OSそのもの:構成管理ツール(Ansibleなど)があれば省略できる場合もある

2. どこまで遡れる必要があるか(RPO)

「何日前のデータまで戻す必要があるか」をRPO(Recovery Point Objective)と言います。

例えば「昨日のデータまで戻れればいい」なら日次バックアップで十分です。
「1時間前の状態に戻したい」なら、それに合った頻度とツールが必要になります。

RPOを決めずにバックアップを設計すると、後から「そんな古いバックアップしかない」という状況が発生します。
最初にビジネス的な要件を確認するのが、現場エンジニアの正しい動き方です。

3. どれくらいで復元できる必要があるか(RTO)

「障害発生から何時間以内にサービスを再開しなければならないか」をRTO(Recovery Time Objective)と言います。

RTOが短いほど、復元手順を自動化・文書化する必要が出てきます。
バックアップとセットで「復元手順書」を用意しておくことが、現場での標準的な運用です。

現場で使われている「3-2-1ルール」

バックアップの基本として業界でよく使われる考え方が「3-2-1ルール」です。
数字 意味 具体例
3 データのコピーを3つ持つ 元データ+バックアップ2箇所
2 2種類の異なるメディアに保存 ローカルHDD+クラウドストレージ
1 1つはオフサイト(別の場所)に置く AWSのS3・Google Drive等
サーバーと同じ物理ラックにバックアップを置いていると、火災や水害でまとめて失います。
この3-2-1は「一緒に壊れないようにする」という発想です。

LinuxサーバーでS3やGoogle Driveへ定期的にバックアップを送るのは、rcloneを使えば設定は難しくありません。「構成を考える時間」と「設定する時間」は全く別で、多くの場合、後者よりも前者の方がずっと重要です。

Linuxバックアップで実際に使うコマンドの考え方

1. rsync ——差分同期の基本

Linuxのバックアップで最初に覚えるべきコマンドがrsyncです。

# ローカルディレクトリをリモートサーバーへ同期する基本形 rsync -avz /var/www/html/ user@192.168.1.100:/backup/html/ # --deleteオプションで「削除」も同期する rsync -avz --delete /var/www/html/ user@192.168.1.100:/backup/html/ # ドライラン(実際には何もしない確認モード) rsync -avz --delete --dry-run /var/www/html/ user@192.168.1.100:/backup/html/

--deleteは送り元から削除されたファイルを宛先からも削除します。
誤ってファイルを削除してしまった後に同期すると、バックアップからも消えてしまいます。
--deleteを使う場合は、必ず世代管理(複数日分の保持)と合わせて設計してください。

2. tar ——アーカイブして圧縮する

ファイル数が多い場合や、完全なスナップショットを取りたい場合はtarで固めるのが有効です。

# /etc配下をgzip圧縮してアーカイブ(日付付きファイル名) tar -czf /backup/etc-$(date +%Y%m%d).tar.gz /etc/ # 確認(内容一覧を表示) tar -tzf /backup/etc-20260515.tar.gz | head -20

実行例(/etc配下のアーカイブ):

# 実行後のファイルサイズ確認 $ ls -lh /backup/etc-20260515.tar.gz -rw-r--r-- 1 root root 2.1M May 15 08:30 /backup/etc-20260515.tar.gz # 内容の一部 $ tar -tzf /backup/etc-20260515.tar.gz | head -5 etc/ etc/hosts etc/hostname etc/resolv.conf etc/fstab

3. cronで自動化する

バックアップは手動ではなく、crontabに登録して自動実行させるのが基本です。

# crontabの編集 crontab -e # 毎日午前2時に/etc配下をバックアップ(例) 0 2 * * * tar -czf /backup/etc-$(date +\%Y\%m\%d).tar.gz /etc/ >> /var/log/backup.log 2>&1

注意点は、cronの環境変数はログインシェルとは異なるため、コマンドのフルパスを書くか、スクリプト内でPATHを明示することが必要です。

バックアップを「作ること」ではなく「戻せること」で評価する

受講生から「バックアップのスクリプトを書きました」と報告を受けた時、私が必ず聞くことがあります。

「それで、実際にリストアのテストはしましたか?」

多くの場合、答えは「まだです」です。

バックアップスクリプトを書いた達成感で満足してしまうのは、SE時代の自分も同じでした。
でも実際の障害では、スクリプトが動いているかどうかではなく、「今すぐ復元できるか」だけが問われます。

月に一度、以下の確認を習慣にするだけで現場での信頼は変わります。

バックアップのファイルサイズが前回と大きく変わっていないか(空ファイルになっていることがある)
cronのログにエラーが出ていないか(/var/log/backup.logなど)
テスト環境で実際に展開して、ファイルが取り出せるか

まとめ

やりたいこと コマンド・手順
ファイルをリモートへ差分同期 rsync -avz /src/ user@host:/dst/
ディレクトリをgzip圧縮してアーカイブ tar -czf backup-$(date +%Y%m%d).tar.gz /target/
アーカイブの中身を確認 tar -tzf backup.tar.gz
毎日自動実行する crontabに登録してログ出力付きで実行
バックアップの正常確認 ファイルサイズ確認 + cronログ確認 + 月次リストアテスト
バックアップは「設定した日」ではなく「障害が起きた日」に評価されます。

「いざとなれば戻せる」という確信を持てる状態にしておくことが、現場での冷静さにも直結します。
Linuxのバックアップ設計を基礎から体系的に学びたい方は、関連記事もぜひ参照してください。

rsyncコマンドでファイルを同期・転送する方法|--deleteの安全な使い方やリモートバックアップも
tarコマンドで圧縮・解凍する方法|オプション一覧と実践的な使い方
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、
無料の「Linuxサーバー構築入門マニュアル(図解60ページ)」をプレゼントしています。
コマンド学習の先にある「サーバーをゼロから組み立てる力」を、初心者が迷わない順序で学べる一冊です。
無料マニュアルを受け取る >>

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。


Linux無料マニュアル(図解60P) 名前とメールで30秒登録