自動バックアップスクリプト
現在、自宅のサーバで動かしている。自動バックアップスクリプト。 バックアップリストを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で動かせば簡単に毎日バックアップをとれます。