Einloggen Registrieren Nutzerliste
Linux From Scratch Ubuntu (CD-Mirror)
Gilde êVoluTion Raid Happy Tree Friends Raid MCToo Gilde Saints and Sinners
Ereignis-Kalender Metadaten Passwörter

Ich habe das Skript, das in diesem Post beschrieben ist, überarbeitet. Nun macht es nicht nur Backups aller lokalen MySQL-Datenbanken, sondern löscht vorher auch alle Backups, die seit einer gewissen Anzahl an Tagen nicht mehr geändert wurden.
Vorteil: Im Backup-Verzeichnis liegt nun immer nur eine festgelegte Anzahl an Sicherungen. Das sieht dann z.B. so aus:

test@bheil-pc:~> ls /var/backups/sql/
insgesamt 28K
drwxr-xr-x 2 root root 4,0K 2007-11-22 06:03 2007.11.22
drwxr-xr-x 2 root root 4,0K 2007-11-23 06:03 2007.11.23
drwxr-xr-x 2 root root 4,0K 2007-11-24 06:03 2007.11.24
drwxr-xr-x 2 root root 4,0K 2007-11-25 06:03 2007.11.25
drwxr-xr-x 2 root root 4,0K 2007-11-26 06:03 2007.11.26
drwxr-xr-x 2 root root 4,0K 2007-11-27 06:03 2007.11.27
drwxr-xr-x 2 root root 4,0K 2007-11-28 15:27 2007.11.28

Man sieht also, es liegen generell immer Sicherungen der letzten 7 Tage bereit.

Hier nun das angepasst Skript:
#!/bin/bash

####################
# Das hier anpassen!
####################
# Das Sicherungsverzeichnis - hier landen alle Backups als
# Unterverzeichnisse und nach Datum sortiert
# Achtung: Dieses Verzeichnis muss existieren und das
# Skript muss dort Schreibrechte besitzen!
SAVEDIR="/home/backup/sql"

# Anzahl der Sicherungen, sprich Tage - 6 steht fuer eine
# Woche (7 Sicherungen, da die aktuelle nicht gezaehlt wird)
DAYSOLD="6"

# Temp-Verzeichnis (das Skript braucht dort Schreibrechte)
TMPDIR="/tmp"

# Root-Passwort zur MySQL-Datenbank
DBPWD="PASSWORT"

####################
# Ab hier i.d.R. keine Aenderung mehr noetig
####################

# Erzeuge Liste aller Datenbanken in $TMPDIR/dbaselist.txt
mysqlshow -u root -p$DBPWD | awk '{print $2}' | \
grep -v Databases | sort > $TMPDIR/dbaselist.txt

# Finde und loesche alles, was seit $DAYSOLD Tagen nicht
# veraendert wurde
find $SAVEDIR -maxdepth 1 -mindepth 1 \
-mtime +$DAYSOLD -exec rm -rf {} \;

# Geh ins Sicherungsverzeichnis und lege ein Verzeichnis
# des heutigen Datums an
cd $SAVEDIR
mkdir -p `date +%Y.%m.%d`
cd `date +%Y.%m.%d`

# Liste der Datenbanken durchgehen und Sicherung erstellen
for x in `cat /tmp/dbaselist.txt`; do
mysqldump --opt -u root -p$DBPWD $x >$x.sql;
done;

# Aufraeumen
rm -f *.gz
rm -f /tmp/dbaselist.txt

# Alle Dateien zippen
gzip *

Diesen Artikel bookmarken

BlinkList  del.icio.us  Folkd  Furl  Google  Linkarena  Mister Wong  OneView  Yahoo MyWeb  YiGG
Klicken Sie auf das Symbol Ihres Bookmark-Service!

Tags zu diesem Artikel

backup  bash  mysql 

Kommentar schreiben


  
  
  
  
  

Weitere Artikel  Weitere Artikel von diesem Tag