Linuxサーバーを運用する上で、バックアップは避けて通れない重要な作業です。ある日突然、ハードウェアの故障や操作ミスで大切なデータが消えてしまったら、その影響は計り知れません。この記事では、Linux環境におけるバックアップの基本的な知識から、具体的なコマンド操作を順を追って分かりやすく解説します。
目次
なぜLinuxのバックアップは重要なのか?
サーバーに保存されているデータは、ビジネスの根幹を成す資産です。これらのデータが失われると、サービスの停止や信用の失墜に繋がりかねません。そうした事態を未然に防ぐために、バックアップは不可欠な保険と言えるでしょう。
データ損失がもたらす深刻なリスク
万が一、顧客情報や取引履歴、開発したソースコードなどのデータが失われた場合、ビジネスに深刻なダメージを与えます。金銭的な損失はもちろんのこと、顧客からの信頼を回復するには長い時間と多大な労力が必要になります。ランサムウェアのようなサイバー攻撃によってデータが暗号化されてしまうリスクも存在し、バックアップはこれらの脅威からデータを守る最後の砦となります。
定期的なバックアップが運用安定の鍵
システムの障害は、予期せぬタイミングで発生します。定期的にバックアップを取得する習慣を確立しておくことで、障害発生時にも迅速に正常な状態へ復旧させることが可能になり、サービスの停止時間を最小限に抑えられます。安定したサーバー運用を実現するためにも、計画的なバックアップは必須のタスクです。
バックアップの前に知るべき基本知識
バックアップと一言で言っても、その対象や方法にはいくつかの種類が存在します。自分の目的や環境に合わせて、適切な方法を選択することが重要です。
システム全体を守る「システムバックアップ」
システムバックアップは、OSやアプリケーション、設定ファイルなど、サーバーが動作するために必要な環境全体を丸ごと保存する方法です。イメージバックアップとも呼ばれます。サーバー自体に致命的な障害が発生した場合でも、このバックアップがあれば、システム全体を迅速に障害発生前の状態に戻すことが可能です。
重要なファイルを守る「データバックアップ」
データバックアップは、Webサイトのコンテンツ、データベースのファイル、ユーザーのホームディレクトリなど、特定の重要なデータのみを対象とするバックアップです。システム全体は不要で、特定のファイルやディレクトリだけを保全したい場合に適しています。
サーバーを止めずに行う「ホットバックアップ」
ホットバックアップは、サーバーを稼働させたまま行うバックアップ方式です。オンラインバックアップとも呼ばれ、サービスを停止させる必要がないため、24時間365日稼働が求められるシステムで利用されます。ただし、バックアップ中にデータが更新される可能性があるため、データの静止点を確保するなどの工夫が必要になる場合があります。
安全確実な「コールドバックアップ」
コールドバックアップは、サーバーや関連するサービスを完全に停止した状態で行うバックアップです。オフラインバックアップとも呼ばれます。データが完全に静止しているため、非常に安全で一貫性のあるバックアップを取得できますが、バックアップ中はサービスを停止する必要があるというデメリットがあります。
3つの主要なバックアップ方式を徹底比較
バックアップを取得する際には、どの範囲のデータをどのように保存するかによって、いくつかの方式に分かれます。ここでは代表的な3つの方式について、その特徴を比較します。
基本となる「フルバックアップ」
フルバックアップは、対象となる全てのデータを毎回取得する、最もシンプルで分かりやすい方式です。復元時には、最新のバックアップファイル1つを用意するだけで済むため、手順が非常に簡単です。しかし、毎回全データを取得するため、バックアップに時間がかかり、保存先の容量も大量に消費します。
効率的な「差分バックアップ」
差分バックアップは、初めに一度フルバックアップを取得し、2回目以降は、そのフルバックアップから変更があったファイルだけをバックアップする方式です。バックアップ時間はフルバックアップよりも短縮されますが、復元時には「フルバックアップ」と「最後の差分バックアップ」の2つが必要になります
最も高速な「増分バックアップ」
増分バックアップは、差分バックアップと似ていますが、2回目以降は「前回のバックアップ(フルまたは増分)から変更があったファイル」だけを取得します。これにより、日々のバックアップ時間とディスク容量を最も効率的に使用できます。一方で、復元する際には「フルバックアップ」と、それ以降の「全ての増分バックアップ」が必要となり、手順が複雑になるというデメリットがあります。
【表で比較】各方式のメリット・デメリット
それぞれの方式の特徴を以下の表にまとめました。自身の運用方針に合わせて最適なものを選択してください。
バックアップ方式 | メリット | デメリット |
---|---|---|
フルバックアップ | 復元が簡単(最新ファイル1つでOK) | 時間とディスク容量の消費が大きい |
差分バックアップ | バックアップ時間が比較的短い | 復元に2つのファイル(フルバックアップと最後の差分バックアップ )が必要。回数を重ねるとデータ量が増加する |
増分バックアップ | バックアップ時間が最も短く、容量効率が良い | 復元手順が複雑で、多くのファイル(フルバックアップとそれ以降の全ての増分バックアップ)が必要 |
バックアップ方法について、詳しくはこちらをご覧ください
フルバックアップ・差分バックアップ・増分バックアップの違いとは?それぞれのバックアップの比較
【コマンド別】Linuxバックアップの実践手順
Linuxには、標準でバックアップツールが備わっています。ここでは、代表的な3つのコマンドを使ったバックアップ手順を紹介します。
rsyncコマンドで柔軟にファイルを同期する
rsyncは、ディレクトリ間やサーバー間でファイルを高速に同期(コピー)するためのコマンドです。変更があったファイルのみを転送するため、2回目以降のバックアップを非常に効率的に行えます。
特定のディレクトリ(例: /var/www/html)を別の場所(例: /backup)にバックアップする場合、以下のようなコマンドを実行します。
rsync -avh –delete /var/www/html/ /backup/html_backup/
- -a (archive): パーミッションや所有者情報を保持したまま再帰的にコピーする、バックアップに最適なオプションです。
- -v (verbose): コピーされているファイルの詳細を表示します。
- -h (human-readable): ファイルサイズなどを人間が読みやすい単位で表示します。
- –delete: コピー元に存在しないファイルを、コピー先からも削除します。これにより、完全な同期が実現できます。
また、SSHを利用して、別のリモートサーバーにバックアップすることも可能です。
rsync -avh -e ssh /var/www/html/ user@remote-server:/home/user/backup/
tarコマンドでファイルをアーカイブし保存する
tarは、複数のファイルやディレクトリを「.tar」という1つのファイル(アーカイブ)にまとめるためのコマンドです。単体では圧縮を行いませんが、gzipやbzip2といった圧縮コマンドと組み合わせることで、容量を節約しながらバックアップを取得できます。
/var/www/htmlディレクトリをgzipで圧縮しながらbackup.tar.gzという名前でアーカイブを作成する例は以下の通りです。
tar -czvf backup.tar.gz /var/www/html/
- -c (create): 新しいアーカイブを作成します。
- -z (gzip): gzip形式で圧縮・展開します。
- -v (verbose): 処理中のファイル名を表示します。
- -f (file): アーカイブファイル名を指定します。
日付を含めたファイル名にすると、いつのバックアップか分かりやすくなります。
tar -czvf backup-$(date +%Y%m%d).tar.gz /var/www/html/
ddコマンドでディスク全体を複製する
ddコマンドは、ディスクやパーティションを、ファイルシステムやデータの中身に関わらず、ブロック単位で丸ごとコピーする非常に強力なツールです。OSを含むシステム全体のイメージバックアップを作成する際に使用されます。
例えば、/dev/sdaというディスク全体を/backup/sda.imgというイメージファイルとして保存する場合は、次のように実行します。
dd if=/dev/sda of=/backup/sda.img bs=4M
- if (input file): コピー元のデバイスやファイルを指定します。
- of (output file): コピー先のファイルやデバイスを指定します。
- bs (block size): 一度に読み書きするブロックサイズを指定します。適切なサイズ(例: 4M)を指定すると、コピーが高速化されます。
- ddコマンドは非常に強力なため、ifとofの指定を間違えると、意図しないディスクのデータを完全に上書きしてしまい、システムを破壊する可能性があります。使用には細心の注意が必要です。
バックアップデータの最適な保存先とは?
バックアップデータをどこに保存するかは、復旧の速度や安全性に直結する重要な選択です。代表的な保存先として、3つの選択肢が考えられます。
手軽で高速なローカルディスク
サーバーに接続された内蔵ディスクや外付けHDDに保存する方法です。セットアップが簡単で、データの読み書きが高速であるというメリットがあります。しかし、サーバー本体が物理的に故障した場合や、火災・地震などの災害が発生した際には、バックアップデータも同時に失われてしまうリスクがあります。
複数サーバーで共有できるNAS
NAS(Network Attached Storage)は、ネットワークに接続して使用する外付けのストレージです。複数のサーバーからバックアップを集約して管理できるため、管理が効率化されます。ローカルディスクよりも物理的な障害からは安全ですが、同じ拠点に設置している場合、災害リスクは依然として残ります。
災害対策にもなるクラウドストレージ
Amazon S3やGoogle Cloud Storageなどのクラウドストレージサービスを利用する方法です。データは物理的に離れたデータセンターに保存されるため、自社の拠点が災害に見舞われてもデータは安全です。これを「DR(ディザスタリカバリ)対策」と呼びます。コストはデータ量や転送量に応じて変動しますが、非常に高い可用性と耐久性を誇ります。
cronによるバックアップの自動化
ができるため、バックアップを実行するスクリプトを作成し、そのスクリプトをcronで定期的に実行するように設定すれば、バックアップを自動的に実行することが可能です。
しかしながら、スクリプトを作成したり、柔軟なスケジュール設定ができない、エラーになった場合の原因の追及が大変など、作成だけではなくその後の運用面でも作業が多く発生し、システム管理者の負担が増えます。
ActiveImage Protector -REであれば、簡単にGUI上でスケジュールの設定やログの確認ができ、さらにEメールでのエラー通知の設定も可能です。
いざという時のための復元(リストア)手順
バックアップは、データを復元できて初めてその価値が生まれます。復元手順を事前に確認し、テストしておくことが極めて重要です。
rsyncとtarからのデータ復元方法
rsyncの場合
rsyncでの復元は非常に簡単です。バックアップ時のコマンドの、コピー元とコピー先のパスを入れ替えるだけです。
# /backup/html_backup/ から /var/www/html/ へ復元
rsync -avh /backup/html_backup/ /var/www/html/
tarの場合
tarで作成したアーカイブは、-x (extract) オプションを使って展開します。
# backup.tar.gz をカレントディレクトリに展開
tar -xzvf backup.tar.gz
特定のディレクトリに展開したい場合は -C オプションを使います。
tar -xzvf backup.tar.gz -C /path/to/restore_directory
ddイメージからシステムを復元する方法と注意点
ddイメージからの復元も、バックアップ時とifとofを入れ替えて実行します。
# /backup/sda.img から /dev/sda へ復元
dd if=/backup/sda.img of=/dev/sda bs=4M
ddイメージからシステムを復元する場合の注意点は以下の3点です。
- 復元先ディスクの指定を絶対に間違えないでください。 稼働中の別のディスクを指定すると、そのデータは完全に失われます。
- 復元先のディスクは、バックアップ元のディスクと同じか、それ以上のサイズである必要があります。
- 通常、システム全体の復元は、Live CDやレスキューモードのOSから起動して行います。
まとめ
Linux環境のバックアップは、rsyncやtar、ddなどのコマンドツールでも可能ですが、企業の重要システムを守るには限界があります。手動運用では、設定ミスやスケジュール管理の負担、さらに復元作業のミスが発生しやすく復旧遅延といったリスクが避けられません。
ActiveImage Protector -RE は、ランサムウェア対策やDR/BCP対策に対応した高度なバックアップ機能を提供し、自動化によって安定した運用を実現します。これにより、管理者の負担を大幅に削減し、緊急時にも迅速な復旧が可能です。
ActiveImage Protector -RE であれば、GUI上の操作で簡単にスケジュールの設定が行えるだけではなく、[ダッシュボード]を活用した運用も行えます。
復元作業もGUI上で行えるため、手入力によるコマンドミスもなく、復旧遅延のリスクも回避できます。
今すぐ、実環境でその効果をお確かめください。