**************************************

バックアップスクリプト作成

[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

TIMESTAMP=`ls --full-time $OLDBACKUPFILE|awk '{print $6}'|tr -d -`
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

echo "`date` encrypt start" >> $BACKUPLOG
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

OLDBACKUPCNT=`expr $(ls /mnti/usb/backup/data-backup.tar.bz2|wc -l) - $BACKUPGEN`
for file in `ls -t $BACKUPDIR|tail -n $OLDBACKUPCNT`
do
rm -f $BACKUPDIR/$file
done

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

で確認したファイルを元のパスに指定して実行

*************************************************************************

投票数:1 平均点:10.00

 
Back to Top