Toon posts:

Backup script redirecten naar logfile.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

Misschien een beetje cryptische titel, maar ik kon niet zo veel anders bedenken :-)
Na enige voorbeeldscripts hebben bekeken en het lezen van een paar manpages heb ik het nu redelijk draaien. Hieronder vindt je wat ik er tot nu toe van gebakken heb.

Wanneer alles goed gaat is er geen probleem, maar nu heb ik even een fout gesimuleerd door bijvoorbeeld het bandje er niet in te doen.

Het backup script zegt keurig tegen me: “mt: The device is offline (not powered on, no tape?).”
Maar deze foutmelding krijg ik in m’n console en niet in mijn logbestandje terwijl ik dit in mijn script naar log.txt rederect.
Ik had begrepen uit mijn "Linux for Dummies" boek dat ik dat doe met “>>” rederect tekens. Wat doe ik fout?

#!/bin/sh
# Backup script gemaakt door Chris de Vries.
# 2005
#
#

#Bron en doel definieren.
#Backup vanaf de root. Dus alles/
BACKUPFILES="/"
#Standaard device tapestation.
DESTINATION="/dev/st0"
# Stuur het logbestand naar het volgende adres.
MAILTO="cjmdevries@zonnet.nl"


#Dagelijkse volledige backup

echo "Dagelijkse backup volledig systeem." > log.txt
# een lege regel.
echo >> log.txt

# -n wil zeggen geen nieuwe regel
echo -n "datum: " >> log.txt
date >> log.txt

#Zet de compressie aan
echo "Aanzetten compressie..." >> log.txt
mt -f $DESTINATION compression 1 >> log.txt

#Terugspoelen
echo "Terugspoelen tape...." >> log.txt
mt -f $DESTINATION rewind

#Beginnen met backupen bestanden.
#De directory /proc moet niet worden gebackupt. gaat op een of andere manier niet goed !?!?
#ook slaan we de cdrom over.
echo "Beginnen backupen bestanden..." >> log.txt
tar -cvf $DESTINATION $BACKUPFILES --exclude=/proc --exclude=/dev/cdrom >> log.txt

#Uitspugen tape
echo "Uitwerpen tape." >> log.txt
eject $DESTINATION

#Mailtje sturen naar beheerder.
mail -s "Backup logbestand." $MAILTO < log.txt

  • blaataaps
  • Registratie: Juli 2001
  • Niet online
Je redirect alleen stdout, je moet ook stderr redirecten.

  • PowerSp00n
  • Registratie: Februari 2002
  • Laatst online: 17-11-2025

PowerSp00n

There is no spoon

code:
1
blabla >> log.txt 2>&1

[ Voor 46% gewijzigd door PowerSp00n op 16-01-2005 14:24 ]


  • a casema user
  • Registratie: Januari 2000
  • Laatst online: 08-02 19:59
Wordt er wel ergens een log.txt bestand aangemaakt ?
Misschien ook handiger om er een path bij te zetten anders kan het bestand opeens ergens anders komen te staan waar je het niet verwacht had.

Taaaa taa taa taaaa taa taa ta taaataaaaa.


Verwijderd

Topicstarter
a casema user schreef op zondag 16 januari 2005 @ 14:24:
Wordt er wel ergens een log.txt bestand aangemaakt ?
Misschien ook handiger om er een path bij te zetten anders kan het bestand opeens ergens anders komen te staan waar je het niet verwacht had.
ok good thinking!

Heb ffe gezocht hoe ik een leeg bestand maak.
touch toch?

Verwijderd

Topicstarter
Werkt ook!! tanks
ik vindt het allemaal wel wat cryptisch dat linux :-)

blabla >> gaat naar log.txt
wat zegt die 2? en wat doet &1.
Ik doe wel ffe een google op stderr.

Bedankt. Man jullie zijn snel!!!!

  • blaataaps
  • Registratie: Juli 2001
  • Niet online
Wat die 2 en &1 doen staat allemaal uitgelegd in de manpage van je shell (waarschijnlijk bash).

Verwijderd

Topicstarter
Ok volgens mij werkt 't allemaal nu.
Nu moet het nog elke dag automatich worden uitgevoerd.
man cron is het he :-)
Het is allemaal wat wennen, maar het werkt toch super. Linux rox _/-\o_

#!/bin/sh
# Backup script gemaakt door Chris de Vries.
#

#Bron en doel definieren.
#Backup vanaf de root. Dus alles/
BACKUPFILES="/etc"
#Standaard device tapestation.
DESTINATION="/dev/st0"
# Stuur het logbestand naar het volgende adres.
MAILTO="cjmdevries@zonnet.nl"
# Plaats van het logbestandje.
LOGILE="/var/log/backup.log"

#Dagelijkse volledige backup

echo "Dagelijkse backup volledig systeem." > $LOGFILE
echo >> $LOGFILE

echo -n "datum: " >> $LOGFILE
date >> $LOGFILE

#Zet de compressie aan
echo "Aanzetten compressie..." >> $LOGFILE
mt -f $DESTINATION compression 1 >> $LOGFILE 2>&1

#Terugspoelen
echo "Terugspoelen tape...." >> $LOGFILE
mt -f $DESTINATION rewind >> $LOGFILE 2>&1

#Beginnen met backupen bestanden.
#De directory /proc moet niet worden gebackupt.
#ook slaan we de cdrom over.
echo "Beginnen backupen bestanden..." >> $LOGFILE
tar -cvf $DESTINATION $BACKUPFILES --exlude=/dev/proc -exclude=/mnt/cdrom >> log.txt 2>&1

#Uitspugen tape
echo "Uitwerpen tape." >> $LOGFILE
eject $DESTINATION >> $LOGFILE 2>&1

#Mailtje sturen naar beheerder.
mail -s "Backup logbestand." $MAILTO < $LOGFILE

Verwijderd

crontab -e
blaataaps schreef op zondag 16 januari 2005 @ 14:37:
Wat die 2 en &1 doen staat allemaal uitgelegd in de manpage van je shell (waarschijnlijk bash).
offtopic:
Er staat #!/bin/sh boven, dat is geen bash ;)

  • blaataaps
  • Registratie: Juli 2001
  • Niet online
Hij gaf aan linux te gebruiken, ik heb nog maar weinig linuxinstallaties gezien waar /bin/sh geen bash is :)

Verwijderd

Topicstarter
blaataaps schreef op zondag 16 januari 2005 @ 14:48:
Hij gaf aan linux te gebruiken, ik heb nog maar weinig linuxinstallaties gezien waar /bin/sh geen bash is :)
ok, de nieuwste versie. Het is tenslotte open source wat ik maak :-)
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
#!/bin/bash
# Backup script gemaakt door Chris de Vries. 
#

#Bron en doel definieren.
#Backup vanaf de root. Dus alles/
BACKUPFILES="/etc"
#Standaard device tapestation.
DESTINATION="/dev/st0"
# Stuur het logbestand naar het volgende adres.
MAILTO="cjmdevries@zonnet.nl"
# Plaats van het logbestandje.
LOGFILE="/var/log/backup.log"

#Dagelijkse volledige backup

echo "Dagelijkse backup volledig systeem." > $LOGFILE 
echo >> $LOGFILE

echo -n "datum:  " >> $LOGFILE
date >> $LOGFILE 

#Zet de compressie aan 
echo "Aanzetten compressie..." >> $LOGFILE
mt -f $DESTINATION compression 1 >> $LOGFILE 2>&1

#Terugspoelen
echo "Terugspoelen tape...." >> $LOGFILE
mt -f $DESTINATION rewind >> $LOGFILE 2>&1

#Beginnen met backupen bestanden. 
#De directory /proc moet niet worden gebackupt.
#ook slaan we de cdrom over.
echo "Beginnen backupen bestanden..." >> $LOGFILE
tar -cvf $DESTINATION $BACKUPFILES --exclude=/proc --exclude=/mnt/cdrom >> $LOGFILE 2>&1

#Uitspugen tape
echo "Uitwerpen tape." >> $LOGFILE 
eject $DESTINATION >> $LOGFILE 2>&1 

#Mailtje sturen naar beheerder.
mail -s "Backup logbestand." $MAILTO < $LOGFILE

Verwijderd

Ik gebruik normaal het logger commando in scripts, dan schrijf je gewoon naar syslogd en mag die verder uitzoeken naar welk bestand er gelogd wordt.

Lichtelijk offtopic:
Heb je er wel eens aan gedacht dat het maken van backups op tape lang kan duren? Dat betekent dus dat de bestanden kunnen veranderen terwijl je ze backupt als je geen voorzorgsmaatregelen neemt (zoals read-only mounten of naar single-user mode gaan)...

Verwijderd

Mietje stelt voor een pre- en postbackup script te maken dat de nodige deamons vóór de backup stopt, en daarna weer opstart? Lijkt me wel zo handig. ;)

Als je gaat tarren is het slim om eerst op de juiste plek te gaan staan ("cd /" ) en vervolgens de leading "/" voor directories niet mee te nemen in je commando, dan kun je "wat makkelijker" op een andere plek restoren. Verder kun je /dev ook excluden van backup.

Is het trouwens niet zo dat als je gaat tarren naar tape je het "f" -vlaggetje niet moet gebruiken?

Verder maak je hier volgens mij uitsluitend een backup van /etc , die zet je namelijk met de variabele " BACKUPFILES="/etc" " bovenaan in je script.

[ Voor 6% gewijzigd door Verwijderd op 17-01-2005 18:22 ]

Pagina: 1