Re: Обработчик логов
> Привет!
>
> К сожалению с обраюоткой логов помочь тебе не смогу :(
> как-то просто внимания на это не обращал
> Меня больше интерисует твой "скриптик" :)
> Я делал что-то похожее - но чувствую, что получилось неуклюже.
>
> А в сторону Amanda ты не смотрел?
Смотрел, но все это, ей богу, оказались совершенно ненужные монстры, во
всяком случае для меня.
К сожалению у меня юниксового опыта не так много, года 2-3, поэтому по
старинке ищещь какие-нить проги. Но когда они тебя чем-то не устраивают
и начинаешь в них копаться, то выясняется что они используют тот же tar
& find. Причем используют с ошибками, как выяснилось после попытки
запустить бекап из пекеджа hdup.
Вот скрипт который лежит на всех серверах, его я где-то в сети нашел и
переписал основательно убрав кучу лишнего кода.
#!/bin/bash
FULLBACKUPDAY="0"
ARCEXT=".tgz"
REMOTEHOST="warzavod"
REMOTEUSER="root"
REMOTESPOOLDIR="/var/data/backups"
RBACKUPRUNDIR="/var/run/rbackup"
BACKUPDIRS="/etc/rbackup/startdirs"
EXCLUDEFILE="/etc/rbackup/excludes"
LOCKFILE="$RBACKUPRUNDIR/lock"
REFFILE="$RBACKUPRUNDIR/reffile"
TMPFILELIST="$RBACKUPRUNDIR/tmplist"
MYNAME=`hostname`
if [ -f $EXCLUDEFILE ]
then
EXCLUDEFILE="--exclude-from=$EXCLUDEFILE"
else
EXCLUDEFILE=''
fi
if [ -f $LOCKFILE ]
then
echo "The lockfile $LOCKFILE exists so probably another backup is running."
echo "Exiting."
exit 2
fi
touch $LOCKFILE
#
# determine backup-type
#
BTIME=`date +%H%M`
DOW=`date +%w`
MONTH=`date +%m`
YEAR=`date +%Y`
BTODAY=`date +%Y%m%d`
FILENAME="$BTODAY"_"$BTIME"
if [ ! -f $REFFILE -o $DOW == $FULLBACKUPDAY -o "$1" == "full" ]
then
FULL="YES"
FILENAME="$FILENAME""_full"
else
FULL="NO"
FILENAME="$FILENAME""_incr"
fi
#
# remote directory handling
#
BACKUPFILE="backup_""$FILENAME""$ARCEXT"
LISTFILE="list_""$FILENAME"
ARCHLOGFILE="alog_""$FILENAME"
BACKUPPATH="$REMOTESPOOLDIR/$MYNAME"
ssh $REMOTEUSER@$REMOTEHOST "mkdir --mode=0770 $BACKUPPATH >/dev/null 2>&1"
#
# Main backup routine
#
# update atime of reffile
if [ "$FULL" == "NO" ]
then
(nice find `cat $BACKUPDIRS` -xdev -cnewer $REFFILE ! -type d -print > $TMPFILELIST) 2>&1
BACKUPDIRS=$TMPFILELIST
fi
touch "$REFFILE"".run"
(nice tar $EXCLUDEFILE --ignore-failed-read -cSzf - -T $BACKUPDIRS | ssh $REMOTEUSER@$REMOTEHOST "cat - > $BACKUPPATH/$BACKUPFILE") 2>&1 || ERROR="1"
ssh $REMOTEUSER@$REMOTEHOST "tar -tzvf $BACKUPPATH/$BACKUPFILE | grep -v -e './$' > $BACKUPPATH/$LISTFILE"
rm -f $LOCKFILE
rm -f $TMPFILELIST
if [ "$ERROR" == "1" ] ; then
echo "Error occured"
exit 2
else
mv "$REFFILE"".run" $REFFILE
fi
скрипт на центральном сервере, который запускает все это...
ORAPATH='/u01/app/oracle/admin/simain'
ORALOGON="manager/$SQLPW"
function mysql_backup () {
ssh $host rm -fr /usr/backup/*
ssh $host msb $mysql_path $SQLPW /usr/backup 2>&1 | sed "s/^/$host: /"
}
function host_backup () {
(ssh $host rbackup.sh) 2>&1 | sed "s/^/$host: /"
}
host='host1'
mysql_path='/u03/mysql'
mysql_backup
ssh host1 su - oracle -c "$ORAPATH/export_generate.pl $ORALOGON > $ORAPATH/export.param" 2>&1 | sed 's/^/titanic: /'
ssh host1 su - oracle -c "exp $ORALOGON parfile=$ORAPATH/export.param file=/usr/backup/oracle_`date +%d%m%Y`.dmp" 2>&1 | sed 's/^/titanic: /'
ssh host1 su - postgres -c "pg_dumpall > /usr/backup/postgres_`date +%d%m%Y`" 2>&1 | sed 's/^/titanic: /'
host_backup
host='host2'
host_backup
host='host3'
host_backup
host='host4'
mysql_path='/var/lib/mysql'
mysql_backup
host_backup
host='host5'
mysql_path='/usr/local/mysql/var'
mysql_backup
host_backup
--
Sergey Polyakov aka BeerBong
Chief of WebZavod http://www.webzavod.ru
Tel. +7 (8462) 43-93-85 | +7 (8462) 43-93-86
mailto:alexei@samara.net
Reply to: