Backup-Skript (aus c't 7/2006)

O

o.tacke

Grünschnabel
Ich habe ein Problem mit einem Skript aus der c't, das mysql-Datenbanken sichern soll und im Rahmen eines (dirvish-)cronjobs läuft. Das Problem ist wahrscheinlich trivial, aber ich habe bisher keine Lösung gefunden.

Wesentlich sind die folgenden Zeilen:

Code:
$BACKUP_DIR={$1:-/backup/db-backups}
DATE='date "+%Y%m%d"'

for i in /var/lib/mysql/*/; do
  dbname = 'basename "$i"'
  mysqldump --user=root "$dbname" | gzip > $BACKUP_DIR/$dbname.$DATE.gz
done

Statt alle Datenbanken separat zu sichern, erhalte ich ein Archiv als basename "$i".date "+%Y%m%d".gz. Ich habe schon diverse Kombinationen bei den Anführungszeichen ausprobiert, aber leider ohne Erfolg. :(
 
wie rufst du denn das Script auf? So wie ich das sehe muss es mit Scriptname /Verzeichnis/des/Backups aufgerfuen werden. Die Variable $1 also der erste Paramter in deinem Script wird ja nicht neu zugewiesen, wenn das Script diesen nicht übergeben bekommt.

Ein wenig komisch programmiert ist das, finde ich. Man könnte den User mit einer einfachen If-Anweisung darauf hinweisen, dass der Parameter nicht übergeben wurde. Zum Beispiel mit:

Code:
if [ -z $1 ]
then
echo "Script needs an argument"
exit 1
fi

Man könnte; und ich würde das machen; noch weitere If-Abfragen einbauen, die prüfen ob ein angegebenes verzeichnis überhaupt existiert usw.

Bleibt noch zu sagen, wer Scripte ausführt ohne sie vollständig zu verstehen bzw. einfach nur alles abpinselt ohne nachzudenken, darf sich nicht wundern wenn mal das System nen abgang macht.
 
Zuletzt bearbeitet:
Denke, du hast in der Zeile
Code:
dbname = 'basename "$i"'
einfach - abgesehen von den überflüssigen Spaces - die falschen Ticks erwischt; versuch doch mal stattdessen
Code:
dbname=`basename "$i"`

Dasselbe (backticks ` statt einfacher ticks ') muss auch in der Zeile DATE=... passieren ...

... und gleich in der ersten Zeile stimmt auch was nicht:
Code:
$BACKUP_DIR={$1:-/backup/db-backups}
sollte wohl
Code:
BACKUP_DIR=${1:-/backup/db-backups}
heissen ...

Gruss
 
Zuletzt bearbeitet:
Problem gelöst

Das Skript wird per cron ausgeführt.
{$1 war ein Tippfehler von mir hier, im Skript steht das korrekt als $1{.

Es lag tatsächlich nur an den Ticks! Mit ` klappt es nun einwandfrei. Wirklich eine fiese Falle...

Vielen Dank!
 

Ähnliche Themen

Backup Skript Erläuterung

Last mit etc/passwd anzeigen lassen

Script zur Datensicherung und anschliessender Email-Versand

dovecot und postfix Konfiguration Problem

Backup spezial Script.

Zurück
Oben