Linux ファイルバックアップスクリプト
centossrvさんとかfedorasrvさんとかに転がってるスクリプトを使わせてもらってるんだけど,個人的に使い勝手の悪い部分があったので改悪。
悪あがきをした事の記録として,ヒトバシラー向けに晒しておくことにする。
http://www.naba78.net/backup.txt
以下,上記URLのテキストを引用。
#!/bin/bash # File Backup Script ver 0.1 # - Distributed by www.naba78.net # - Original: http://centossrv.com/backup.shtml # Language LANG=C # Configurations # # Backup list # *Notice: Full path BACKUPLIST=/root/cron_scripts/backuplist.txt [ ! -s $BACKUPLIST ] && echo "$BACKUPLIST is not found" && error_exit # Backup expection list #BACKUPNOLIST=/root/cron_scripts/backupnolist.txt # Backup Point Directory # *Notice: You should make an exclusive directory. BACKUPDIR=/root/backup mkdir -p $BACKUPDIR # Backup archive name / format TIME_STAMP=$(date '+%Y%m%d-%H%M%S') FILE_NAME=backup_$TIME_STAMP.tar.bz2 # Archive days BACKUPGEN=90 # Pass phrase # *Notice: If you don't set the parameter, backup archiver don't process the encryption. PASS='' # Backup log BACKUPLOG=$BACKUPDIR/backup_$TIME_STAMP.log # # Configurations Complete! # # Expectional error function error_exit () { rm -f $TMPBACKUPNOLIST exit 1 } # Add the backup point directory to Expection file list #TMPBACKUPNOLIST=`mktemp` #[ -s $BACKUPNOLIST ] && cat $BACKUPNOLIST > $TMPBACKUPNOLIST #echo "$BACKUPDIR/" >> $TMPBACKUPNOLIST # Change directory cd $BACKUPDIR # Create backup log touch $BACKUPLOG chmod 444 $BACKUPLOG # Backup start echo "`date` backup start" >> $BACKUPLOG #tar cjvfP $BACKUPDIR/$FILE_NAME -T $BACKUPLIST -X $TMPBACKUPNOLIST >> $BACKUPLOG 2>&1 tar cjvfP $BACKUPDIR/$FILE_NAME -T $BACKUPLIST >> $BACKUPLOG 2>&1 code=$? if [ $code -ne 0 ]; then cat $BACKUPLOG | mail -s "BACKUP NG CODE IS $code" root rm -f $BACKUPDIR/$FILE_NAME error_exit else chmod 744 $BACKUPDIR/$FILE_NAME fi echo "`date` backup end" >> $BACKUPLOG # Archive Encryption if [ ! -z $PASS ]; then echo "`date` encrypt start" >> $BACKUPLOG mkdir -p $HOME/.gnupg echo $PASS|gpg --passphrase-fd 0 --batch -c $BACKUPDIR/$FILE_NAME > /dev/null 2>&1 code=$? if [ $code -ne 0 ]; then cat $BACKUPLOG | mail -s "BACKUP NG CODE IS $code" root rm -f $BACKUPDIR/$FILE_NAME* error_exit fi rm -f $BACKUPDIR/$FILE_NAME echo "`date` encrypt end" >> $BACKUPLOG fi # Remove old archives find $BACKUPDIR -mtime +$BACKUPGEN -exec rm -f '{}' ';' # Delete the Expection file list #rm -f $TMPBACKUPNOLIST