データのバックアップを外付けUSBへ作成
**************************************
バックアップスクリプト作成
[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=/media/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 /media/usb/backup/data-backup.tar.bz2|wc -l) -gt $BACKUPGEN ]; then OLDBACKUPCNT=`expr $(ls /medi/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 バックアップ対象リスト作成 1つのファイルのみを復元したい場合は、 # tar tjvf /media/usb/backup/data-backup.tar.bz2 | more で確認したファイルを元のパスに指定して実行 |