[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: