Linuxにおけるシステムバックアップ

Linux環境を丸ごとバックアップします。

自らサーバーを立ち上げていれば、万が一の事を考えバックアップはしておきたいもの。
ここでは、dump,restoreコマンドを使いシステムを丸ごとバックアップする手順を紹介します。
  1. バックアップ手順
  2. リストア手順
  1. バックアップ手順
    ここで行うバックアップはdumpコマンドを利用します。
    dumpコマンドはファイルシステムをバックアップします。通常バックアップ先はDATドライブだったりしますが、僕は持っていないのでファイルに出力します。
    バックアップの単位はパーティション毎に行います。
    まず、僕の環境では以下のようにパーティションが作成されています。
    ここへ、バックアップ用のパーティションを一つ追加します。(別に容量の大きなパーティションがあればよいです。)
    僕の環境ではインストール時に全てのハードディスクを使っていないので、バックアップ用に3Gbyteのパーティションを作成します。
    [root /root]# fdisk /dev/hda   <-- パーティション作成
    Command (m for help): n
    First cylinder (713-1467, default 713):
    Enter
    Using default value 713
    Last cylinder or +size or +sizeM or +sizeK (713-1467, default 1467):
    +3G
    Command (m for help): wq
    [
    root /root]# mkfs -t ext2 /dev/hda10 <--フォーマット
    [root logs]# df -h  <-- パーティションの状況
    Filesystem      Size    Used    Avail    Use% Mounted on
    /dev/hda3    243M     61M    170M      27%   /
    /dev/hda1      30M    4.6M     24M      16%   /boot
    /dev/hda8    988M    368k    937M        1%   /home
    /dev/hda6    494M     16M    453M        4%   /tmp
    /dev/hda5     2.0G     1.7G    237M      88%   /usr
    /dev/hda7    494M     63M    405M       14%   /var
    /dev/hda9     1.0G    5.8M     968M       1%    /usr/local/apache2/htdocs
    /dev/hda10    2.9G   677M     2.0G       25%   /backup

     バックアップに用いるダンプコマンドですが、これはパーティション単位に行う必要がある為、全てのパーティションの分だけ実行します。
    僕は、cronに登録し、毎日夜中の三時に動かしています。履歴は2世代持つようにしています。
    これが、cronに登録してあるシェルです。
    現在、総容量が2Gくらいですが、30分程度で終了します。また、gzipでの圧縮により3分の1位のサイズで収まっています。バックアップ先は/backupディレクトリです。バックアップファイル名はhda(n)_月日.zipとしています。また、起動時に二日以上前のファイルを削除しています。
    /backup/backup.sh
    #!/bin/sh

    #二日前のファイルを削除
    find /backup -mtime +1 -maxdepth 1 -name '*.zip' -exec rm -f {} \;

    #バックアップ実行
    /sbin/dump -0f - /dev/hda1 2>> /backup/backup.log | gzip > /backup/hda1_`date +%m%d`.zip
    /sbin/dump -0f - /dev/hda3 2>> /backup/backup.log | gzip > /backup/hda3_`date +%m%d`.zip
    /sbin/dump -0f - /dev/hda5 2>> /backup/backup.log | gzip > /backup/hda5_`date +%m%d`.zip
    /sbin/dump -0f - /dev/hda7 2>> /backup/backup.log | gzip > /backup/hda7_`date +%m%d`.zip
    /sbin/dump -0f - /dev/hda8 2>> /backup/backup.log | gzip > /backup/hda8_`date +%m%d`.zip
    /sbin/dump -0f - /dev/hda9 2>> /backup/backup.log | gzip > /backup/hda9_`date +%m%d`.zip

    作成したスクリプトをクーロンに登録します。これで毎日3時0分ちょうどに起動されます。
    crontab -e
    00 03 * * * /backup/backup.sh

  2. リストア手順
    バックアップしたファイルをリストアする方法です。
    ここでは例として、/varの状態をバックアップファイルよりリストアする方法を示します。
    ファイル内容の確認を行うには
    [root /var]# zcat /backup/hda7_0307.zip | restore -tf - z
    ファイルのリスト (注意カレントディレクトリに展開されるので、リストアするディレクトリで行う必要があります。)
    [root /var]# zcat /backup/hda7_0307.zip | restore -rf -
    また、zcatの代わりにgunzip -cでも同様に行えます。
バックアップとリストアについては以上です。
万が一の為にバックアップは取っておきましょう。
最後に付け加えておきますが、ここで示した例ではバックアップ対象とバックアップ先が同じハードディスクなのでハードディスクがクラッシュした場合は対応出来ません。
可能ならばバックアップ先は別のハードディスクにしましょう。

お問い合わせはwebmaster@ryouto.jpまで。
Copyright (C)2003 ryouto.jp. All Rights Reserved.