Linux管理・運用の基本
システム管理者のための実践ガイド
システム管理者のための実践ガイド
LinuxサーバーやデスクトップPCを安定して運用する上で、バックアップは欠かせない作業です。万が一のシステム障害やデータ破損に備え、適切なバックアップ戦略を立てることが重要になります。しかし、バックアップと一口に言っても、その手法は様々です。どのツールをどのような目的で使い分ければよいか迷うこともあるでしょう。
この記事では、Linux環境で広く使われるバックアップ・リストアツール「rsync」「rsnapshot」「Timeshift」「Clonezilla」の4つに焦点を当て、それぞれの特徴と最適なユースケースを解説します。実際のコマンド例や設定例を通して、いざという時に困らないための実践的な知識を身につけましょう。
rsync(Remote Sync)は、ローカルまたはリモートのファイルやディレクトリを効率的に同期するためのコマンドラインツールです。差分転送アルゴリズムにより、変更された部分のみを転送するため、ネットワーク負荷を抑えながら高速なバックアップが可能です。
オプション | 意味 | 使用例 |
---|---|---|
-a |
アーカイブモード。パーミッション、オーナー、タイムスタンプなどを保持して転送します。 -rlptgoD とほぼ同義です。 |
rsync -a source/ dest/ |
-v |
詳細表示モード。転送中のファイル名を表示します。 | rsync -av source/ dest/ |
-z |
圧縮モード。転送中にデータを圧縮します。低帯域回線でのリモート転送時に効果的です。同一マシン内での使用は非推奨です。 | rsync -azv source/ dest/ |
-h |
人間が読みやすい形式で表示します。 | rsync -avh source/ dest/ |
--delete |
転送元にないファイルを転送先から削除します。意図しない削除に注意が必要です。 | rsync -av --delete source/ dest/ |
--exclude |
指定したファイルやディレクトリを転送から除外します。 | rsync -av --exclude 'cache/' source/ dest/ |
使用例:ローカルディレクトリの増分バックアップ
sudo rsync -avh --delete /var/www/html/ /mnt/backup/webdata/
/var/www/html/
の内容を /mnt/backup/webdata/
に同期します。次回実行時には、前回から変更があったファイルや新規ファイルのみがコピーされます。システムファイルを扱う場合はsudo
をつけましょう。初めて実行する際は、--dry-run
オプションを付けて意図した通りに実行されるか確認することをおすすめします。
# rsyncでバックアップ先から復元する例
sudo rsync -avh /mnt/backup/webdata/ /var/www/html/
バックアップ元のディレクトリとバックアップ先のディレクトリを逆に指定するだけです。--delete
オプションを付けないことで、誤って必要なファイルを消してしまうリスクを回避できます。
rsnapshotは、rsync
をバックエンドに利用して、複数の世代にわたる増分バックアップを効率的に管理するシェルスクリプトです。ハードリンクを利用することで、変更のないファイルはディスク容量を消費せずに世代間で共有されます。
rsync
を使用し、前回のバックアップからの差分のみをコピーします。rsnapshotは/etc/rsnapshot.conf
に設定を記述します。設定ファイルに誤りがないかrsnapshot configtest
で事前に確認すると安心です。
# /etc/rsnapshot.conf
# 世代数と世代期間を定義
# hourlyは1日分、dailyは1週間分など
retain hourly 6
retain daily 7
retain weekly 4
retain monthly 6
# バックアップの保存先
snapshot_root /mnt/rsnapshot/
# バックアップ対象のディレクトリ
# backup行は「src」と「ラベル(サブディレクトリ名)」だけ
# ディレクトリ名は環境に合わせて変更してください
backup /home/ localhost/
backup /etc/ localhost/
retain
: バックアップの世代管理を設定します。retain hourly 6
は、過去6世代分の時間単位バックアップを保持するという意味です。snapshot_root
: バックアップデータの保存先を指定します。backup
: バックアップ対象のディレクトリと、そのバックアップを保存するサブディレクトリ(ラベル)を指定します。コマンド例
# rsnapshotをhourly単位で実行
sudo rsnapshot hourly
rsnapshotのバックアップデータは、単なるファイルとディレクトリの集合です。復旧したいファイルやディレクトリを、バックアップ世代のディレクトリから直接コピーするだけで復元できます。世代番号は「daily.0
が最新、daily.1
が1つ前」といったように、数字が大きいほど古いバックアップを指します。
# 2世代前の/etc/hostsファイルを復元する場合
sudo cp /mnt/rsnapshot/daily.2/localhost/etc/hosts /etc/hosts
Timeshiftは、主にLinuxデスクトップ環境のシステムファイルを対象としたバックアップツールです。OSのシステムファイルのみを対象とし、ユーザーのホームディレクトリは含めない(オプションで可能)のが特徴です。システムアップデートやドライバーのインストールでシステムが不安定になった場合に、以前の状態に簡単に戻すことができます。
/boot
, /etc
, /usr
など、システムに関連するディレクトリを対象とします。rsync
やBtrfs
の機能を使い、差分のみを効率的に保存します。GUI上でRestore
(復元)ボタンをクリックし、復元したいスナップショットを選択するだけで完了します。ブートローダーの再インストールや、OSを再起動して復元を実行するなど、より詳細なオプションも選択できます。
Clonezillaは、パーティションやディスク全体をイメージファイルとしてバックアップ・復元するツールです。ファイル単位ではなく、ブロック単位でディスクをコピーするため、ファイルシステムの種類を問わず、完全なシステム状態を保存できます。
Clonezillaで復元するには、専用のライブCD/USBからシステムを起動し、ウィザードに従って進めます。復元したいディスクイメージを選択してrestoreを実行するだけで、システム全体を元の状態に戻すことが可能です。
Timeshift
はシステムが起動しないと使えません。この場合はClonezilla
で事前に取得したベアメタルバックアップから復旧するのが最も確実です。バックアップは「取って終わり」ではありません。有事の際に確実に復旧できることが重要です。
組み合わせ活用事例
実運用では、複数のツールを組み合わせて使うことが一般的です。
rsync
やrsnapshot
で重要なデータや設定ファイルを毎時・毎日バックアップします。Clonezilla
を使用し、システム全体のベアメタルバックアップを取得します。トラブルの内容 | 選択すべきツール |
---|---|
間違ってファイルを削除した、設定を戻したい | rsync / rsnapshot: 世代管理されたファイルから簡単に復元できます。 |
OSアップデート後にシステムが不安定になった | Timeshift: システムファイルに特化しているため、直前の正常な状態に素早く戻せます。 |
ハードディスクが故障した、OSごと復元したい | Clonezilla: ディスク全体のイメージから、新しいディスクにシステムを丸ごと復元します。 |
この記事では、Linuxにおけるバックアップとリストアの主要ツールを解説しました。
rsync
を使いつつ、複数世代のバックアップを効率的に管理したい場合に適しています。これらのツールは、それぞれ得意なことが異なります。目的や環境に合わせて使い分けることで、より堅牢なバックアップ戦略を構築できます。
今回の記事が、皆さんのLinux管理・運用の一助となれば幸いです。ご覧いただきありがとうございました。