自動バックアップスクリプト

現在、自宅のサーバで動かしている。自動バックアップスクリプト。 バックアップリストをtar.gzで圧縮し、ローカルにあるtera stationにftpで転送している。

昔どこかで、見たものを改造し使っています。

[sourcecode language='bash']

!/bin/bash

#

setting

#

LANG=C

backup list

BACKUPLIST=/etc/backup/backuplist [ ! -s $BACKUPLIST ] && echo "$BACKUPLIST is not found" && exit 1

no backuplist

BACKUPNOLIST=/etc/backup/backupnolist

back up dir

BACKUPDIR=/backup

FTP

FTPDIR=/backup FTPHOST=192.168.0.1 FTPID=id FTPPASS=pass

backup generation

BACKUPGEN=10

error mail

ERRORMAIL=error@localdomain

set timestamp

TIMESTAMP=date +"%Y%m%d"

touch backup log

BACKUPLOG=backup.$TIMESTAMP.log touch $BACKUPDIR/$BACKUPLOG chmod 400 $BACKUPDIR/$BACKUPLOG

do backup

BACKUP=backup.$TIMESTAMP.tar.gz echo "date backup start" >> $BACKUPDIR/$BACKUPLOG tar zcvfP $BACKUPDIR/$BACKUP -T $BACKUPLIST -X $BACKUPNOLIST >> $BACKUPDIR/$BACKUPLOG 2>&1 [ $? -ne 0 ] && cat $BACKUPDIR/$BACKUPLOG | mail -s "BACKUP ERROR" $ERRORMAIL && exit 1 echo "date backup end" >> $BACKUPDIR/$BACKUPLOG

compression log

gzip -c $BACKUPDIR/$BACKUPLOG > $BACKUPDIR/$BACKUPLOG.gz rm $BACKUPDIR/$BACKUPLOG

remove old tar

if [ $(ls $BACKUPDIR/backup..tar.gz|wc -l) -gt $BACKUPGEN ]; then OLDBACKUPCNT=expr $(ls $BACKUPDIR/backup..tar.gz|wc -l) - $BACKUPGEN for file in ls -t $BACKUPDIR/backup.*.tar.gz|tail -n $OLDBACKUPCNT do rm -f $file done fi

remove old log

if [ $(ls $BACKUPDIR/backup..log.gz|wc -l) -gt $BACKUPGEN ]; then OLDBACKUPCNT=expr $(ls $BACKUPDIR/backup..log.gz|wc -l) - $BACKUPGEN for file in ls -t $BACKUPDIR/backup.*.log.gz|tail -n $OLDBACKUPCNT do rm -f $file done fi

ftp

/usr/bin/ftp -n -v $FTPHOST << EOF user $FTPID $FTPPASS put $BACKUPDIR/$BACKUP $FTPDIR/$BACKUP put $BACKUPDIR/$BACKUPLOG.gz $FTPDIR/$BACKUPLOG.gz quit EOF [/sourcecode]

これをcronで動かせば簡単に毎日バックアップをとれます。