backupscript en email

Pagina: 1
Acties:
  • 115 views sinds 30-01-2008
  • Reageer

  • DjFoxy
  • Registratie: Oktober 2000
  • Laatst online: 15-11-2023
Hallo ik heb het volgende backupscript geschreven voor mijn Linux RH 7.3 server

#!/bin/bash

# Backupscript Versie 0.3 9-11-2002

# Maak de directory aan met de datum waar vandaag in gebackupt moet worden
mkdir /home/backup/$(date +%Y%m%d)

# Voer de verschillende backup scripts uit

OF=/home/backup/$(date +%Y%m%d)

tar czf $OF/renate.tgz /home/renate
tar czf $OF/rootscrips.tgz /root/scripts
tar czf $OF/samba.tgz /etc/samba
tar czf $OF/html.tgz /var/www/html
tar czf $OF/djfoxy.tgz /home/djfoxy
tar czf $OF/snurp.tgz /home/snurp
cp /etc/issue $OF/
cp /etc/issue.net $OF
cp /etc/motd $OF
cp /etc/httpd/conf/httpd.conf $OF
cp /etc/rc.d/rc.local $OF
cp /etc/hosts.deny $OF

als ik dit start vanaf de commando promt, dan gaat alles goed.
Als ik het script aanroep vanuit een cronjob, dan gaat de backup wel goed, maar dan heb ik de volgende dag 67 emailtjes in mijn mailbox staan mbt ditt script.
Ook als ik > /dev/null gebruik in mijn cron.

Iemand enig idee hoe ik het script automatisch kan laten runnen zonder dat ik hier veel email van krijg.
Ik wil gerust een emailtje van hebben zodat ik weet dat het goed is gegaan, maar geen 67 stuks.

Dj

Jaja de paprika


  • JMW761
  • Registratie: Oktober 2001
  • Laatst online: 11:47
ff het pad van mkdir,tar en cp aangeven, should do the trick? :D

[ Voor 5% gewijzigd door JMW761 op 18-01-2003 18:33 . Reden: typo ]


  • XTerm
  • Registratie: Juli 2001
  • Laatst online: 10-06-2025
Dit is een slecht oplossing maar goed...
Laat dat script als een andere user draaien, dedicated daaraan, zodat die 67 mails naar zijn mailbox gaan. Op het einde van het script verwijder je die users zn mail zodat het niet teveel ruimte inneemt en in je script mail je je zelf een status rapportje.

Dit is 'not the way things should be done' maar het is het beste dat ik kan bedenken :)

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 13-05 17:46

Kees

Serveradmin / BOFH / DoC
en gebruik: tar czf ${OF}.......

en ook: > /dev/null 2> &1 dan krijg je zeker geen mail.

En kijk ook waarom hij mailed, staat hij toevallig 67 keer in de crontab om maar iets te noemen?

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


  • DjFoxy
  • Registratie: Oktober 2000
  • Laatst online: 15-11-2023
Ik heb het script aangepast zie hieronder :

#!/bin/bash

# Backupscript crul.nl # Versie 0.3 9-11-2002

# Maak de directory aan met de datum waar vandaag in gebackupt moet worden
/bin/mkdir /home/backup/$(date +%Y%m%d)

# Voer de verschillende backup scripts uit

OF=/home/backup/$(date +%Y%m%d)

/bin/tar czf $OF/renate.tgz /home/renate
/bin/tar czf $OF/rootscrips.tgz /root/scripts
/bin/tar czf $OF/samba.tgz /etc/samba
/bin/tar czf $OF/html.tgz /var/www/html
/bin/tar czf $OF/djfoxy.tgz /home/djfoxy
/bin/tar czf $OF/snurp.tgz /home/snurp
/bin/cp /etc/issue $OF/
/bin/cp /etc/issue.net $OF
/bin/cp /etc/motd $OF
/bin/cp /etc/httpd/conf/httpd.conf $OF
/bin/cp /etc/rc.d/rc.local $OF
/bin/cp /etc/hosts.deny $OF


echter krijg ik nog steeds de melding in mijn mailbox en dan rond de 60 x

Date: Sun, 19 Jan 2003 18:15:00 +0100
From: Cron Daemon <root@localhost>
To: root@crul.nl
Subject: Cron <root@localhost> /home/backup/scripts/backup.txt > /dev/null 2

/bin/mkdir: cannot create directory `/home/backup/20030119': File exists
/bin/tar: Removing leading `/' from member names
/bin/tar: Removing leading `/' from member names
/bin/tar: Removing leading `/' from member names
/bin/tar: Removing leading `/' from member names
/bin/tar: Removing leading `/' from member names
/bin/tar: Removing leading `/' from member names
/bin/mkdir: cannot create directory `/home/backup/20030119/mysql': File exists

ik snap er niks van

Jaja de paprika


  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

laat uw stderror doorverwijzen naar uw stdout door hetgeen te doen wat kees zei te doen.
Want nu gaat hij al die errors naar je doormailen

ahja, wat je ook kan doen om die warnings niet meer te krijgen (geloof ik):
/bin/tar czf $OF/renate.tgz -P /home/renate
...

edit:
hoofdletter P dus..

[ Voor 7% gewijzigd door -FoX- op 19-01-2003 23:14 ]


  • pinball
  • Registratie: Oktober 1999
  • Niet online

pinball

Electric Monk

60 keer?
het wordt niet toevallig 1 minuut lang elke seconde uitgevoerd?
niw, wat kees zei (> /dev/null 2> &1) helpt zeker, maar zolang je 60 mailtjes krijgt zou ik dat niet doen, want dat is juist een teken dat er iets niet goed gaat.

Verder: (heeft nix met je probleem te maken)
maak je het jezelf niet wat moeilijk door die losse dirs/files te doen?
gewoon heel /etc, /root en heel /home is imo een stuk makkelijker. Vergeet je iig niets.

edit:

Die -p optie zou ik niet gebruiken, helpt wel tegen output, maar zorgt er ook voor dat je gebackupte bestanden gerestored worden naar /, en dat kan vervelend uitpakken.

[ Voor 19% gewijzigd door pinball op 19-01-2003 23:16 . Reden: -p ]

Whenever you find that you are on the side of the majority, it is time to reform.


  • DjFoxy
  • Registratie: Oktober 2000
  • Laatst online: 15-11-2023
Een anatal van de voorgestelde aanpassingen aan mijn script heb ik van de week uitgeprobeerd.
Tot nu toe krijg ik nog steeds 60 emailtjes.
Ik heb echter net mijn script aangepast en om mijn variabele deze haakjes gezet {}
dus nu ziet een regel van het script er zo uit
/bin/tar czf ${OF}/renate.tgz -P /home/renate
Bedankt Kees.

Het script staat in mijn crontab en aan het einde van de dag weet ik of ik weer 60 emailtjes heb gekregen of niet.
Ik hou jullie op de hoogte

Jaja de paprika


  • arikkert
  • Registratie: Juli 2002
  • Laatst online: 17-02 12:23
post je crontab eens. dit n.a.v. opm. pinball

  • DjFoxy
  • Registratie: Oktober 2000
  • Laatst online: 15-11-2023
hier is ie dan

0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/bin/mrtg /root/scripts/mrtg.cfg > /dev/null &


* 4 * * * /home/backup/scripts/backup2.txt

Jaja de paprika


  • bruto
  • Registratie: Juni 2001
  • Laatst online: 22-11-2025

bruto

Druktemaker.

hij wordt nu elk uur de vierde minuut executed of ben ik nou scheel ?

Hier heb je een voorbeeld van mijn ftpbackup baksel:

29 1 * * * /glftpd/bin/bFtp-backup.sh >/dev/null 2>&1

Die wordt elke nacht om 01:29 executed.

[ Voor 54% gewijzigd door bruto op 21-01-2003 15:55 . Reden: cronzooi ]

The more you know, the more you know you don't know.


Verwijderd

Een andere oplossing is om ipv /dev/null, /pad/naar/logfile te gebruiken. Dan ben je namelijk op de hoogte als er wat mis gaat. Nog iets, waarom doe je naar /home/backup/<date> backup'pen? Is het niet veel handiger om incremental backups te gebruiken? Scheelt weer een hoop diskspace en IO/CPU resources... Ennne, die cron regel van je he, die doet iedere minuut op 4 uur 's nachts die backup starten. Vandaar ook de +/- 60 mailtjes. Verander dat eens in zoiets:
code:
1
0 4 * * * /pad/naar/backup.sh

Start op 0400 pcies /pad/naar/backup.sh

offtopic:
Een shell script hoort imho een .sh extentie te hebben en geen .txt (als je die uberhaupt wilt gebruiken..)

[ Voor 32% gewijzigd door Verwijderd op 21-01-2003 21:03 ]


  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

/bin/tar: Removing leading `/' from member names --> los je op met de -P instructie!

als je een force doet zou je ook geen foutmeldingen meer mogen krijgen

Verwijderd

DjFoxy schreef op 21 januari 2003 @ 14:21:
* 4 * * * /home/backup/scripts/backup2.txt
Je script wordt om 4 uur 's nachts ELKE minuut uitgevoerd. De eerste keer zal alles goed gaan, de enige 'fout'meldingen zijn die van tar (het verwijderen van de leading slashes uit de padnaam). Deze meldingen worden naar stderr geschreven. De resterende 59 minuten geeft mkdir ook een foutmelding (/home/backup/[datum] is immers in de eerste minuut aangemaakt).

Wat je moet doen is:
code:
1
0 4 * * * /home/backup/scripts/backup2.txt >/dev/null 2>&1

Nu wordt je script om 04:00 uitgevoerd, stdout wordt niet getoond (redirect naar /dev/null) en stderr wordt naar dezelfde locatie als stdout geredirect (ook /dev/null dus).
Als je het nog wat mooier wilt maken kun je er ook voor zorgen dat je elke dag een mailtje krijgt met de status van je backup (gelukt/mislukt) of alleen een mailtje als de backup mislukt is.

edit:
post van r3b00t over het hoofd gezien... |:(

[ Voor 5% gewijzigd door Verwijderd op 21-01-2003 22:12 ]


  • DjFoxy
  • Registratie: Oktober 2000
  • Laatst online: 15-11-2023
Bedankt voor de tips, ik ga het meteen vannacht weer uitproberen.
Mijn crontab ziet er nu zo uit

0 4 * * * /home/backup/scripts/backup2.txt

Ik wist echt niet dat het eerste symbool op 0 moest staan, ik dacht dat een * ook wel goed was omdat ik het 2e symbool al had ingevuld

er staat nog geen /dev/null etc achter omdat ik eerst wil weten of ik nog van die emailtjes ga krijgen.

Ik zal vandaar de manpages van cron eens doorlezen hoe het zit met het automatisch sturen van een emailtje !
Lijkt me wel makkelijk als ik een email krijg met de melding dat het is gelukt of niet !

Maar alle hulp is welkom hoor !
Ben nog niet zo lang bezig met het maken van scripts en het werken met crontab

PS ik heb mijn script extensie veranderd in .sh
En als je me vraagt waarom het .txt was dan moet ik eerlijk bekennen dat ik geen idee had waarom.

PS 2 de -P instructie is ook toegevoegd en idd krijg ik nu de meldingen niet meer van die slashes

[ Voor 16% gewijzigd door DjFoxy op 22-01-2003 07:27 ]

Jaja de paprika


  • DjFoxy
  • Registratie: Oktober 2000
  • Laatst online: 15-11-2023
Het toevoegen van een incremental backup is volgens mij niet meer dan -G toevoegen, toch ?
Ja en de datum ed niet veranderen anders schrijft hij nog elke dag een backup naar een nieuwe lokatie !

Jaja de paprika


Verwijderd

DjFox, je weet wel dat je met -P als je gaat extracten direct de files overschrijft? Zonder "-P" weet je tenminste zeker dat je niet per ongeluk bestanden overschrijft (door bijvoorbeeld al je backups te extracten naar /home/restore oid). Bijgevoegt nog een snippet uit een backup script wat ik hier op m'n werk gebruik (het gedeelte wat de daadwerkelijke backup doet):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
DOW=`date +%a`
NEWER=""
if [ x"${DOW}" = x"Fri" ]; then 
  echo "[`date`]: Started full backup" &> ${LOGDIR}/${BCK_LOGFILE}
  NEWER=""
  echo `date +%Y-%m-%d` > ${LAST_FULL}
else 
  if [ -f $LAST_FULL ]; then
    echo "[`date`]: Started incremental backup" &> ${LOGDIR}/${BCK_LOGFILE}
    NEWER="newer=/etc/backup/last_full"
  fi
fi
su - eenuser -c "( /usr/local/bin/star cvf ${DEVICE} ${NEWER} -C ${BCK_TARGET} . )" \
>> ${LOGDIR}/${BCK_LOGFILE} 2>> ${LOGDIR}/${BCK_LOGFILE}

if [ $? != 0 ]; then
  echo "=== ERROR: the operation returned a non-zero status ==="
  echo "Check ${LOGDIR}/${BCK_LOGFILE} for details"
fi

echo "[`date`]: Finished with backup" >> ${LOGDIR}/${BCK_LOGFILE} 2>> ${LOGDIR}/${BCK_LOGFILE}

if [ x"${DOW}" = x"Fri" ]; then
  cat << EOF | mail -s "[`date`]: Full backup is finished" ${ADMIN}
Hi Admin

I backed up all data you requested. The logfile is soooo large, I'm not going to send it.
See the file ${LOGDIR}/${BCK_LOGFILE}.bz2 for details.

Kind Regards,

Root at backupbox
EOF
else
  cat << EOF | mail -s "[`date`]: Incremental backup is finished" ${ADMIN}
Hi Admin

All data that has been changed since the last full backup, which was on `cat $LAST_FULL`
has been put on tape. For a complete list of all data, have a look at the file 
${LOGDIR}/${BCK_LOGFILE}.bz2

Kind Regards,

Root at backupbox
EOF

fi
bzip2 -9 ${LOGDIR}/${BCK_LOGFILE}
mt rewoffl

[ Voor 19% gewijzigd door Verwijderd op 22-01-2003 12:07 . Reden: xcuses voor de layout ]


  • DjFoxy
  • Registratie: Oktober 2000
  • Laatst online: 15-11-2023
Hehe,

doordat idd het * van de crontab gewijzigd moest worden in 0, heb ik nu geen emailtjes meer.
Bedankt voor de info.
Ik ga me nu bezighouden met die incremental backups

Jaja de paprika

Pagina: 1