**************************************
バックアップスクリプト作成
[root@falcon21 ~]# vi data-backup.sh
#!/bin/bash
#
# ローカル内でバックアップ
#
LANG=C
#
# 設定開始
#
# バックアップ対象リスト名
# ※バックアップ対象をフルパスで記述したリスト
BACKUPLIST=/root/data-backuplist
[ ! -s $BACKUPLIST ] && echo "$BACKUPLIST is not found" && exit 1
# バックアップ対象外リスト名
# ※バックアップ対象外をフルパスで記述したリスト
BACKUPNOLIST=/root/data-backupnolist
# バックアップ先ディレクトリ名
#BACKUPDIR=/backup
BACKUPDIR=/mnt/usb/backup
mkdir -p $BACKUPDIR
# バックアップ保存世代数
# ※当日分を含めた過去分バックアップを保存する世代数
# ※過去分バックアップを保存しない場合は1を指定する
BACKUPGEN=5
# 暗号化・復号化パスフレーズ
# ※指定がないときは暗号化しない
PASS=''
# バックアップログファイル名
BACKUPLOG=/var/log/data-backup.log
#
# 設定終了
#
# バックアップ先ディレクトリをバックアップ対象外リストに追加
# ※バックアップ先ディレクトリをバックアップしないようにする
TMPBACKUPNOLIST=`mktemp`
[ -s $BACKUPNOLIST ] && cat $BACKUPNOLIST > $TMPBACKUPNOLIST
echo $BACKUPDIR >> $TMPBACKUPNOLIST
# 前回バックアップをリネーム
cd $BACKUPDIR
OLDBACKUPFILE=`ls data-backup.tar.bz2* 2>/dev/null`
if [ -f $OLDBACKUPFILE ]; then
mv $BACKUPDIR/$OLDBACKUPFILE $BACKUPDIR/${TIMESTAMP}$OLDBACKUPFILE > /dev/null 2>&1
fi
# バックアップログファイル作成
rm -f $BACKUPLOG
touch $BACKUPLOG
chmod 400 $BACKUPLOG
# バックアップ実行
echo "`date` data-backup start" >> $BACKUPLOG
tar cjvfP $BACKUPDIR/data-backup.tar.bz2 -T $BACKUPLIST -X $TMPBACKUPNOLIST >> $BACKUPLOG 2>&1
[ $? -ne 0 ] && cat $BACKUPLOG | mail -s "BACKUP NG" root && exit 1
echo "`date` data-backup end" >> $BACKUPLOG
# バックアップ暗号化(暗号化・復号化パスフレーズ指定時のみ)
if [ ! -z $PASS ]; then
mkdir -p $HOME/.gnupg
echo $PASS|gpg --passphrase-fd 0 --batch -c $BACKUPDIR/data-backup.tar.bz2 > /dev/null 2>&1
[ $? -ne 0 ] && cat $BACKUPLOG | mail -s "BACKUP NG" root && exit 1
rm -f $BACKUPDIR/data-backup.tar.bz2
echo "`date` encrypt end" >> $BACKUPLOG
fi
# バックアップ保存世代を超えた古いバックアップを削除
if [ $(ls /mnt/usb/backup/data-backup.tar.bz2|wc -l) -gt $BACKUPGEN ]; then
for file in `ls -t $BACKUPDIR|tail -n $OLDBACKUPCNT`
do
fi
# バックアップ対象外リスト削除
rm -f $TMPBACKUPNOLIST
[root@falcon21 ~]# chmod 700 data-backup.sh
バックアップ対象リスト作成
[root@falcon21 ~]# echo "/home" >> data-backuplist
[root@falcon21 ~]# echo "/root" >> data-backuplist
[root@falcon21 ~]# echo "/var/www" >> data-backuplist
[root@falcon21 ~]# echo "/var/lib/mysql" >>data-backuplist
バックアップ対象外リスト作成
[root@falcon21 ~]# echo "/var/www/error" >> data-backupnolist
[root@falcon21 ~]# echo "/var/www/icons" >> data-backupnolist
[root@falcon21 ~]# echo "/var/www/manual" >>data- backupnolis
バックアップスクリプト確認
[root@falcon21 ~]# ./data-backup.sh
しばらく、かなり、時間がかかる。
バックアップ内容確認 (解凍ではない。)
[root@falcon21 ~]# tar tjvf /media/usb/backup/backup.tar.bz2
:
バックアップ定期自動実行設定
[root@falcon21 ~]# echo "0 3 * * * /root/data-backup.sh" > /etc/cron.d/backup
*******************************************
/home ディレクトリの復元例
[root@falcon21 ~]# tar jxvfP /media/usb/backup/data-backup.tar.bz2 / /home
1つのファイルのみを復元したい場合は、
# tar tjvf /media/usb/backup/data-backup.tar.bz2 | more
で確認したファイルを元のパスに指定して実行
*************************************************************************