prosim o pomoc se scriptem
Dan Lukes
dan at obluda.cz
Fri Sep 8 14:08:37 CEST 2006
Jaroslav Votruba napsal/wrote, On 09/08/06 13:25:
> snazim se napsat jednoduchy scriptik na zalohu jedne DB z mysq a protoze
> s tim zacinam potreboval bych poradit s nekolika drobnostmi(pro vas,pro
> me zatim nadlidskej ukol)
>
> #!/bin/sh
PERLove reseni tu uz padlo, tak ja dolnim ten shell (preci kvuli takove
drobnosti nebudeme instalovat a nasledne udrzovat tak ohromny balik,
kterym PERL je).
> DATE=`date +%Y-%m-%d` #format datumu
> DATABASES="PwkDemo pwkdemoII" #nazvy db psat za sebe oddelene
> mezerou
> NAMEBCUP=`$DATE $DATABASES.sql` #jmeno zalohy
> MAIL=`mail at neco.cz mail2 at neco.cz` #maily ,kam budou posilany vysledky
> zalohovani-psat za sebe oddelene mezerou
> LOG=`/var/log/pwk_backup/$NAMEBCUP.log` #cesta k logu
> OK=`Zalohovani databaze $DATABASES probehlo v poradku` #zaloha je
> vytvorena
Zacnu tim, ze ` je, snad, nasledkem nejakeho divneho presunu scriptu do
emailu - jinak se retezce uzaviraji do " nebo '
> mysqldump -a -Q -c --user=$USER --password=$HESLO $DATABASES > "$CESTA
> $NAMEBCUP"
>
> ####PRVNI VEC CO SE MI NELIBI###
> #pokud do DATABASES napisu vic DB prestava mi to
> fungovat(logicky),bohuzel nevim jak to vse upravit ,aby pro kazdou DB co
> vypisu do DATABASES mi to vytvorilo zalohu a log
Pouzit:
set -- $DATABASES
mysqldump -a -Q -c --user=$USER --password=$HESLO $* > ...
> #kontrola vytvoreni souboru a vytvoreni logu
> if
> test -f "$CESTA $NAMEBCUP" #Soubor existuje
> then
> cd "$LOG" #Vytvor log
> echo $OK > "$NAMEBCUP"
Existence souboru bohuzel nezarucuje, ze dump je kompletni - s oheldem
na to, jak byl soubor vytvoren (presmerovani) bude dokonce existovat
naprosto vzdy - byt' treba prazdny
Dokumentace ani manualova stranla se o navratovych kodech mysqldump
nezminuje - neni tedy jiste, jestli se uspesnost da zjistovat podle
toho. Mozna by slo zjistovat, zda vygenerovany soubor konci nejakym
typickym radkem, kterym tyhle soubory mysql obvykle zakoncuje - ale
nevim, jestli tam takovy rozumny je.
Pokud ano, delalo by se to nejspis sekvenci
if tail ... | grep ... ; then ...
> ####DRUHA VEC CO SE MI NELIBI###
> #jak se muzu vyhnout prikazu cd-predstavoval bych si to nejak jako
> echo $OK > "$LOG $NAMEBCUP",ale to je nefuncni
> #proste bych chtel mit cestu na jednom radku
Ze zapisu neni prilis zrejme, jak se ma vlastne LOG a vysledny soubor
jmenovat. Obzvlast v pripade vicenasobneho seznamu databazi.
Promenna LOG v te chvili uz ovsahuje neco, co mi pripada jako jmeno
souboru, takze nechapu, proc je za ni jeste $NAMEBCUP coz je dalsi jmeno
souboru ...
Pokud se ovsem mylim a $LOG je adresar, pak u UNIXu se cesta zapisuje
oddelena '/' nikoli ' ' - takze
echo $OK > "$LOG/$NAMEBCUP"
> ####TRETI VEC CO SE MI NELIBI###
> #nevim jak mam log vlozit do mailu a poslat na MAIL
mail -s '<subject>' 'seznam-adres-oddelenych-carkou' < "$LOG/$NAMEBCUP"
Pokdu neni mozne nahore seznam adres oddelovat rovnou carkou, pak je
treba nejprve provest nejakou konverzi. nejlepe pomoci
tr ' ' ','
Dan
--
Dan Lukes SISAL MFF UK
AKA: dan at obluda.cz, dan at freebsd.cz,dan at kolej.mff.cuni.cz
More information about the Users-l
mailing list