rsyncで増設HDDにバックアップ
前のページでは同一のHDD内にバックアップを作成したが、HDDの故障に対処するには別のHDDにバックアップをとった方がいい。ここではIDEで接続する内蔵HDDを増設し、そこにバックアップをとることを考えてみる。
増設HDDをフォーマット
新しいHDDを追加してLinuxを起動したら、まずは増設HDDを利用できるようにフォーマットを行う。フォーマットを行う前にHDDが正しく認識されているか確認してみよう。次のコマンドを入力し、接続したHDDの名前や容量などの情報が表示されれば正しく認識されている。
# dmesg | grep hdb
ide0: BM-DMA at 0x1410-0x1417, BIOS settings: hda:DMA, hdb:DMA
hdb: HDS722580VLAT20 IDE Hard Drive, ATA DISK drive
hdb: attached ide-disk driver.
hdb: 8388608 sectors (4295 MB) w/32KiB Cache, CHS=522/255/63, UDMA(33)
hdb: unknown partition table
#
「hdb」というのはHDDを示すデバイス名のこと。IDEで接続したHDDの場合、1台目は「hda」、2台目は「hdb」、その次が「hdc」となる。外付けのHDDでは「sda」「sdb」「sdc」となるので、外付けを選んだ場合はデバイス名を読み替えてほしい。
次にfdiskコマンドでHDDの領域確保を行う。複数の領域に分割して使うこともできるが、ここでは全体を1つの領域として使うように設定してみる。
# fdisk /dev/hdb コマンド (m でヘルプ): n ←新たに領域を作成する コマンドアクション e 拡張 p 基本領域 (1-4) p ←基本領域を作成する 領域番号 (1-4): 1 ←領域の番号を指定 最初シリンダ (1-522, 初期値 1): ←空のまま「Enter」 初期値 1 を使います 終点シリンダ または+サイズ または+サイズM または+サイズK (1-522, 初期値 522) :←空のまま「Enter」 初期値 522 を使います コマンド (m でヘルプ): p ←領域の設定を確認する Disk /dev/hdb: 4294 MB, 4294967296 bytes 255 heads, 63 sectors/track, 522 cylinders Units = シリンダ数 of 16065 * 512 = 8225280 bytes デバイス ブート 始点 終点 ブロック ID システム /dev/hdb1 1 522 4192933+ 83 Linux コマンド (m でヘルプ): w ←設定を書き込んで終了する 領域テーブルは交換されました! ioctl() を呼び出して領域テーブルを再読込みします。 ディスクを同期させます。 #
領域の確保が終わったらフォーマットだ。WindowsではFATやNTFSというファイルシステムが使われるのに対し、Linuxではext2やext3が用いられている。ext3はext2の強化版であり、ジャーなリング機能が取り入れられた。とつぜんシステムがダウンしてもHDD上のデータに矛盾が生じにくく、かりに不整合があったとしてもジャーナルという記録によってすぐに回復できる。Vine Linuxではext3がサポートされているので、よほどの理由がないときはext3でフォーマットすべきだ。
フォーマットにはmkfs.ext3コマンドを使う。「hdb1」というのは2台目のHDDに存在する1番目の領域という意味。
# mkfs.ext3 /dev/hdb1
mke2fs 1.35 (28-Feb-2004)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
524288 inodes, 1048576 blocks
52428 blocks (5.00%) reserved for the super user
First data block=0
32 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 29 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
#
フォーマットしたHDDをマウントする
WindowsではHDDにアルファベットのドライブ名が割り当てられるが、Linuxにはドライブ名という概念がない。HDDは「マウント」して、どこかのディレクトリに割り当てる。増設したHDDも同じようにどこかのディレクトリにマウントする必要がある。
割り当てるディレクトリはどこでもいいが、一般的には/mntディレクトリの中にマウントポイントを作成する。ここではバックアップ用に使うということで/mnt/backupというディレクトリを作成しよう。ディレクトリの階層が深くなるならルートディレクトリにいきなり/backupというディレクトリを作ってもかまわない。
ディレクトリを作ったら、mountコマンドで増設したHDD(/dev/hdb1)をそのディレクトリに割り当てる。dfコマンドで正しくマウントされているかを確認しよう。
# mkdir /mnt/backup # mount /dev/hdb1 /mnt/backup # df ファイルシステム 1k-ブロック 使用中 空き 使用% マウント場所 /dev/hda2 3826584 878308 2753892 25% / /dev/hda1 46633 10512 33713 24% /boot /dev/hdb1 4127076 32828 3884604 1% /mnt/backup #
システムを起動するたびにmountコマンドでマウントするのは大変だ。そこで/etc/fstabを編集して、起動時に増設したHDDが自動的にマウントされるように設定する。最後の一行を追加してほしい。
LABEL=/ / ext3 defaults 1 1 LABEL=/boot /boot ext3 defaults 1 2 none /dev/pts devpts gid=5,mode=620 0 0 none /proc proc defaults 0 0 none /dev/shm tmpfs defaults 0 0 /dev/hda3 swap swap defaults 0 0 /dev/cdrom /mnt/cdrom iso9660 noauto,owner,kudzu,ro,io... /dev/fd0 /mnt/floppy auto noauto,owner,kudzu,iocha... /dev/hdb1 /mnt/backup ext3 defaults 1 2
増設したHDDにrsyncでバックアップする
ここまでくれば、あとはこのページで紹介したのと同じだ。/mnt/backupディレクトリをバックアップ先としてrsyncコマンドを実行する。うまく実行できれば/etc/crontabを編集して、定期的に自動実行するように設定しておく。これで何もすることなく自動的にバックアップが行われ、データの安全性は大幅に増す。
# rsync -a --delete /home /etc/backup