Avatar billede net-base.dk Nybegynder
20. september 2008 - 18:45 Der er 4 kommentarer og
1 løsning

shellscript til backup af /var/log/messages

Hej.

Jeg skal bruge et script som jeg kan bruge i et cronjob.

scriptet skal kunne flg.

kopiere /var/log/messages til /var/log/backup/YYYYMMDD.messages

hvor YYYYMMDD self er 20080920 som er i dag...

Håber nogle kan være behjælpeligt med at lave dette hurtige script burde ikke tage specielt langtid for en som er haj til shell script.
Avatar billede mfalck Praktikant
20. september 2008 - 19:00 #1
en tilrettet version af et tilsvarende script som burde kunne klare det.

#!/bin/bash

#######################################################
#                                                    #
# Backs up a log file to a zip archive with          #
# the following format yyyymmdd                      #
# This version do not restart syslog                  #
#######################################################


#######################################################
# the log file to backup
LOG_FILE=/var/log/messages
if [ ! -r ${LOG_FILE} ]
then
  echo can not find or read logfile ${LOG_FILE}
fi

#######################################################
#the name of the backup directory. remember the trailing slash
BACKUP_DIR=/var/log/backup/

# Creates the backup dir if necessary
if [ ! -d ${BACKUP_DIR} ]
then
  mkdir -p ${BACKUP_DIR}
fi

##########################
# CREATES THE DATE PATTERN
DATO=`date +%Y%m%d`
##########################

#######################################################
# copies the log to a temporary place
if [ ! -d ${BACKUP_DIR}temp ]
then
  mkdir ${BACKUP_DIR}temp
fi
cp ${LOG_FILE} ${BACKUP_DIR}temp/$DATO.messages
if [ $? -ne 0 ]
then
  echo The copy was not successfull. Ending here.
  exit 1
fi

#remove next line to trunc LOG_FILE
#echo "" >${LOG_FILE}

#######################################################
# Generates the name of the backup file
BACKUP_FILE=${BACKUP_DIR}$DATO.messages.zip

# Zips the logfile
cd ${BACKUP_DIR}temp
zip -9qD ${BACKUP_FILE} *
if [ $? -ne 0 ]
then
  echo backup failed
  exit 1
fi

# Removes the temporary file
if [ -d ${BACKUP_DIR}temp ]
then
  rm -rf ${BACKUP_DIR}temp
fi

echo Backup completed
Avatar billede mfalck Praktikant
20. september 2008 - 19:01 #2
jeg kan ikke lige teste det så prøv lige et sted hvor det ikke kan lave "ballade"
Avatar billede net-base.dk Nybegynder
20. september 2008 - 21:49 #3
Scriptet virkede ikke, men det gav mig de info jeg havde brug for til selv at kunne lave det... så smid svar så får du point da du ledte mig på vejen til at løse det...
Avatar billede mfalck Praktikant
20. september 2008 - 22:04 #4
ok - hvad var fejlen (mere hvis der er andre som kigger efter det samme)?
Avatar billede net-base.dk Nybegynder
20. september 2008 - 22:13 #5
Aner det ikke, men den kopiere ikke filen som den skulle så jeg lavede selv et lille script... som virkede...

#!/bin/bash
echo "STARTING BACKUP"
LOG_FILE="/var/log/messages"
BACKUP_DIR="/var/log/backup"
DATO=`date +%Y%m%d`
cp $LOG_FILE $BACKUP_DIR/$DATO.messages
rm -f $BACKUP_FILE
echo "BACKUP COMPLETET!"

Det giver lidt sig selv
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester