重要データを任意のHDDへ定期的にバックアップUNIX処方箋(2/3 ページ)

» 2008年04月24日 09時00分 公開
[ITmedia]

tarコマンドを使ったシェルスクリプト

 /home/user1にあるファイルすべてをファイルサーバ(fserver)の/home/user1/backup に、「backup_files.tar」という名前でバックアップすることにします。

 表1を確認すると、バックアップ先の領域は、/backupというディレクトリでNFSマウントしていますので、作成するシェルスクリプトのサンプルは、リスト1A(hdd_backup1.sh)のようになります。また、リスト1Bリスト1Cのように、日付や時刻が分かるようにしたり、圧縮されたアーカイブファイルとしてバックアップされるようにするのもよいでしょう。

#!/bin/sh

SRCDIR=/home/user1 ←バックアップ元のディレクトリの指定

DESDIR=/backup ←バックアップ先のディレクトリの指定

TARFILE=backup_files.tar ←アーカイブファイルの指定

cd $SRCDIR ←バックアップ元に移動

tar cf $DESDIR/$TARFILE . ←バックアップの実行

exit


リスト1A hdd_backup1.sh

TARFILE=backup_files_`date +%m%d%H%M`.tar


リスト1B リスト1Aの$TARFILEの指定に日付や時刻を入れると、いつバックアップしたものか分かる

tar cf - . | compress -c > $DESDIR/${TARFILE}.Z


リスト1C リスト1Aのバックアップの実行の部分を、バックアップデータが圧縮されたアーカイブファイルになるように変更する

dump/restoreコマンドを使ったシェルスクリプト

 バックアップ先ディレクトリに、サブディレクトリを作成して、そこにデータをリストアすると、次回のバックアップ時の更新やバックアップの世代管理が楽になります。

 スクリプトのサンプルは、リスト2(hdd_backup2.sh)のようになります。リスト2の例では、バックアップ先のディレクトリに「dump_<日付時刻>」のサブディレクトリが作成され、そこにバックアップデータが保存されます。次回のバックアップ時に、新たにサブディレクトリを作成すると、バックアップの世代管理が可能になりますし、サブディレクトリごと削除することで、バックアップデータの消去もできます。スクリプト内で指定するサブディレクトリを「SUBDIR=dumpdir」のように名前を固定しておき、世代管理をする際にサブディレクトリの名前に日付などをつけて管理してもよいでしょう。

#!/bin/sh

SRCDIR=/home/user1 ←バックアップ元のディレクトリの指定

DESDIR=/backup ←バックアップ先のディレクトリの指定

SUBDIR=dump_`date +%m%d%H%M` ←リストアを行うサブディレクトリの指定

mkdir $DESDIR/$SUBDIR ←リストア先のディレクトリ作成

cd $DESDIR/$SUBDIR ←リストア先のディレクトリへ移動

dump 0f - $SRCDIR | restore rf - ←dump/restoreの実行

exit


リスト2 hdd_backup2.sh

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ