Gå til innhold

Anbefalte innlegg

Jeg kjører dette scriptet for backup av databaser men den tar ikke vare på eldre backups så hvordan gjør jeg dette.

 

Og skulle ha hatt kommando for å restore en enkel database om det trengs

 

Her er scriptet jeg bruker

 

#!/bin/bash
### MySQL Server Login Info ###
MUSER="root"
MPASS="MYSQL-ROOT-PASSWORD"
MHOST="localhost"
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
BAK="/backup/mysql"
GZIP="$(which gzip)"
### FTP SERVER Login info ###
FTPU="FTP-SERVER-USER-NAME"
FTPP="FTP-SERVER-PASSWORD"
FTPS="FTP-SERVER-IP-ADDRESS"
NOW=$(date +"%d-%m-%Y")

[ ! -d $BAK ] && mkdir -p $BAK || /bin/rm -f $BAK/*

DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
for db in $DBS
do
FILE=$BAK/$db.$NOW-$(date +"%T").gz
$MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS $db | $GZIP -9 > $FILE
done

lftp -u $FTPU,$FTPP -e "mkdir /mysql/$NOW;cd /mysql/$NOW; mput /backup/mysql/*; quit" $FTPS

Lenke til kommentar
Videoannonse
Annonse
Jeg kjører dette scriptet for backup av databaser men den tar ikke vare på eldre backups så hvordan gjør jeg dette.

 

Og skulle ha hatt kommando for å restore en enkel database om det trengs

 

Her er scriptet jeg bruker

 

#!/bin/bash
### MySQL Server Login Info ###
MUSER="root"
MPASS="MYSQL-ROOT-PASSWORD"
MHOST="localhost"
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
BAK="/backup/mysql"
GZIP="$(which gzip)"
### FTP SERVER Login info ###
FTPU="FTP-SERVER-USER-NAME"
FTPP="FTP-SERVER-PASSWORD"
FTPS="FTP-SERVER-IP-ADDRESS"
NOW=$(date +"%d-%m-%Y")

[ ! -d $BAK ] && mkdir -p $BAK || /bin/rm -f $BAK/*

DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
for db in $DBS
do
FILE=$BAK/$db.$NOW-$(date +"%T").gz
$MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS $db | $GZIP -9 > $FILE
done

lftp -u $FTPU,$FTPP -e "mkdir /mysql/$NOW;cd /mysql/$NOW; mput /backup/mysql/*; quit" $FTPS

 

fjern "||/bin/rm -f $BAK/*", der den sletter gamle backuper. men husk at dette fører til at backupkatalogen fylles opp. du kan evt. få den til å slette backuper eldre enn en viss dato.

feks:

$year=$(date +"%Y")

year=$((year-1))

rm -f $BAK/$db.*$year".gz"

 

dette er utestet kode, men hensikten er altså å slette alt som er fra 2008. du får prøve deg frem i et skall før du faktisk kjører scriptet på databasene dine.

Lenke til kommentar
fjern "||/bin/rm -f $BAK/*", der den sletter gamle backuper. men husk at dette fører til at backupkatalogen fylles opp. du kan evt. få den til å slette backuper eldre enn en viss dato.

feks:

$year=$(date +"%Y")

year=$((year-1))

rm -f $BAK/$db.*$year".gz"

 

find ${BAK} -type f -mtime +20 -name 'db.*.gz' -delete

 

Denne sletter alle filer i $BAK, som er modifisert for mer enn 20 dager siden og har navn som begynner på "db." og slutter på ".gz" :)

Lenke til kommentar
Nå har jeg endret scriptet og har også plassert den i /etc/cron.hourly/ men den kjører ikke hver time da

 

Men jeg trenger et restore script også for databasene om det skulle trenges

 

restore kan du gjøre manuelt =)

er bare å pakke ut databasen, og gi den til mysql. heter vel mysqlimport eller noe sånt. evt. via den grafiske klienten.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...