Page 1 of 1
DB-Backup-Skript
Posted: 2003-08-10 00:35
by s4fuser
Hallo,
ich habe mir mit Hilfe von Google und den FAQ hier ein kleines Shell-Skript zusammenkopiert, das in recht kurzen Abständen meine DB sichern soll. Leider funktioniert es nicht so richtig.
Hier ist das aktuelle Skript:
Code: Select all
#!/bin/sh
output_file="/backup/sql/dump.sql"
count_files=`ls -l /backup/sql/database* | wc -l`
count_files=expr $count_files - 1
if [ $count_files -gt 7 ]; then
file_list=`ls -S -t -p -r /backup | grep gz`
rm /backup/sql/${file_list%%gz*}gz
fi
mysqldump --all-databases --add-drop-table -c -p PASSWORT > $output_file 2>&1
filename="/backup/sql/database_`date +%Y-%m-%d-%k.%M`.sql.gz"
gzip $output_file
mv $output_file.gz $filename
chmod g+wr /backup/sql/*
Zwar wird eine Datei erstellt, aber sie enthält nur eine Anleitung zum Befehl mysqldump. Was mache ich falsch?
Ausserdem wird ein Fehler in Zeile 5 gemeldet. Ein "command" ist nicht bekannt. Ich nehme an, es geht um expr.
Re: DB-Backup-Skript
Posted: 2003-08-10 10:43
by captaincrunch
Ich denke, das ganze sollte so aussehen :
Code: Select all
#!/bin/sh
output_file="/backup/sql/dump.sql"
count_files=`ls -l /backup/sql/database* | wc -l`
count_files=`expr $count_files - 1`
if [ $count_files -gt 7 ]; then
file_list=`ls -S -t -p -r /backup | grep gz`
/bin/rm /backup/sql/${file_list%%gz*}gz
fi
`which mysqldump` --all-databases --add-drop-table -c -pPASSWORT > $output_file 2>&1
filename="/backup/sql/database_`date +%Y-%m-%d-%k.%M`.sql.gz"
`which gzip` $output_file
/bin/mv $output_file.gz $filename
`which chmod` g+wr /backup/sql/*
Re: DB-Backup-Skript
Posted: 2003-08-11 21:50
by s4fuser
Jetzt bekomme ich nur eine Fehlermeldung:
/bin/chmod: failed to get attributes of `/backup/sql/*#!/bin/sh': No such file or directory
Re: DB-Backup-Skript
Posted: 2003-08-11 22:45
by freeze
Bei mir läuft folgendes Script wunderbar. Ist auch hier aus dem Forum:
Code: Select all
#!/bin/sh
mysql_host="localhost"
mysql_rootpasswd="xyz"
backupdir="/home/backup"
mysql_backupdir="${backupdir}/mysql"
mysql_dump="/usr/bin/mysqldump"
mysql_show="/usr/bin/mysqlshow"
## 1 = yes(xxxx-2001xxxx-xx.sql.gz)
## 0 = no
db_compress="1"
## not include list (mit | abtrennen)
not_dump_db="beispiel_db|"
sysdtime=`date +%Y%m%d-%H%M`
mysql_connect="-h $mysql_host -u root -p$mysql_rootpasswd"
mysql_DBs="`$mysql_show $mysql_connect | egrep -v "${not_dump_db}Databases|+" | awk '{print $2}' 2>/dev/null`"
mysql_dump_work() {
mysql_each_DB="$1"
mysql_dump_file="${mysql_backupdir}/${mysql_each_DB}-${sysdtime}.sql"
$mysql_dump $mysql_connect --opt $mysql_each_DB > $mysql_dump_file
if [ "$db_compress" = "1" ] ; then
gzip -9 $mysql_dump_file
fi
}
if [ "$mysql_DBs" != "" ] ; then
if [ ! -d "$mysql_backupdir" ] ; then
mkdir -p "$mysql_backupdir"
chmod 700 "$mysql_backupdir"
fi
for mysql_DB in $mysql_DBs ; do
mysql_dump_work $mysql_DB
done
fi
exit 0
Re: DB-Backup-Skript
Posted: 2003-08-12 08:26
by captaincrunch
/bin/chmod: failed to get attributes of `/backup/sql/*#!/bin/sh': No such file or directory
Wie heißt das Script bei dir, und was hast du gemacht, damit es zu diesem Fehler kam ?
Re: DB-Backup-Skript
Posted: 2003-08-12 08:56
by s4fuser
Das Skript heisst /backup/sql/dump_sql.sh
Ich habe es genauso gestartet (per Hand), wie vorher, als es halbwegs klappte.
Re: DB-Backup-Skript
Posted: 2003-08-12 17:59
by s4fuser
So funktioniert es:
Code: Select all
#!/bin/sh
output_file="/backup/sql/dump.sql"
count_files=`ls -l /backup/sql/database* | wc -l`
count_files=`expr $count_files - 1`
if [ $count_files -gt 7 ]; then
file_list=`ls -S -t -p -r /backup | grep gz`
rm /backup/sql/${file_list%%gz*}gz
fi
`which mysqldump` --all-databases --add-drop-table -c -pPASSWORT > $output_file 2>&1
filename="/backup/sql/database_`date +%Y-%m-%d-%k.%M`.sql.gz"
gzip $output_file
mv $output_file.gz $filename
chmod g+wr /backup/sql/*
Danke für die Hilfe.
Danke auch an Freeze, aber ich wollte dieses Skript nutzen, weil es immer 10 Versionen nebeneinander anlegt und die jeweils elfte löscht.
Das ganze muß ich jetzt noch so erweitern, dass alles auch automatisch auf den FTP-Backupspace geschoben wird.
Aber genau mit dem automatischen Löschen gibt es noch Probleme. Die Dateien sehen so aus: database_2003-08-12-17.56.sql.gz, aber löschen will das Skript andere:
Code: Select all
rm: cannot remove `/backup/sql/2003-07-01.tgz': No such file or directory
Mal sehen, ob ich das auch noch hinbekomme.
Re: DB-Backup-Skript
Posted: 2003-08-12 18:03
by s4fuser
War ein dummer Fehler.
Diese Zeile:
Code: Select all
file_list=`ls -S -t -p -r /backup | grep gz`
muss einfach nur so aussehen:
Code: Select all
file_list=`ls -S -t -p -r /backup/sql | grep gz`
Bei mir liegen in /backup die anderen Backups.
Re: DB-Backup-Skript
Posted: 2003-08-21 00:08
by s4fuser
So, das Skript tut nun schon eine Weile seinen Dienst und schiebt den aktuellen Dump auch per FTP auf den Backupspace.
Aber jetzt habe ich ein Problem, bei dem ich erst dachte, es taucht wie von Geisterhand auf und verschwindet wieder. Nun habe ich aber festgestellt, dass es nur Probleme gibt zwischen 00.00 und 09.59 Uhr. Also immer, wenn bei der Uhrzeit vorne eine Null steht.
Das Datum und die Uhrzeit wird ja in folgender Zeile in den Dateinamen gepackt:
Code: Select all
filename="/backup/sql/database_`date +%Y-%m-%d-%k.%M`.sql.gz"
Aber wo ist da das Problem?
Als Fehlermeldung bekomme ich während diesen Uhrzeiten folgendes:
mv: when moving multiple files, last argument must be a directory
Try `mv --help' for more information.
cp: copying multiple files, but last argument `/backup/sql/letzterdump.sql.gz' is not a directory
Try `cp --help' for more information.
Cannot open local file /backup/sql/letzterdump.sql.gz for reading: No such file or directory.
ncftpput /backup/sql/letzterdump.sql.gz: could not open file.
rm: cannot remove `/backup/sql/letzterdump.sql.gz': No such file or directory
Klar, das meiste sind Folgefehler. Aber wo ist die Ursache?
Re: DB-Backup-Skript
Posted: 2003-08-23 21:44
by s4fuser
Wirklich niemand, der den Fehler sieht? Ich bekomme jede Nacht 10 mal diese Fehlermeldungen gemailt und bin mit meinem Latein am Ende.
Re: DB-Backup-Skript
Posted: 2003-08-28 03:21
by s4fuser
Da mein halbwegs funktionierendes Skript bisher hier noch nicht gepostet wurde, hier noch einmal komplett:
Code: Select all
#!/bin/sh
output_file="/backup/sql/dump.sql"
count_files=`ls -l /backup/sql/database* | wc -l`
count_files=`expr $count_files - 1`
if [ $count_files -gt 7 ]; then
file_list=`ls -S -t -p -r /backup/sql | grep gz`
rm /backup/sql/${file_list%%gz*}gz
fi
`which mysqldump` --all-databases --add-drop-table -c -pPASSWORT > $output_file 2>&1
filename="/backup/sql/database_`date +%Y-%m-%d-%k.%M`.sql.gz"
gzip $output_file
mv $output_file.gz $filename
chmod g+wr /backup/sql/*
Fällt nicht doch noch einem von Euch auf, warum es Probleme zu Uhrzeiten mit einer 0 vorne gibt? Ich bin bis heute nicht dahinter gestiegen.
Re: DB-Backup-Skript
Posted: 2003-08-28 04:22
by fritz
probier mal, aus dem kleinen 'k' ein grosses 'H' zu machen - evtl. stört das blank, das bei einstelligen Stunden dort produziert wird
p150:~ # filename="/backup/sql/database_`date +%Y-%m-%d-%k.%M`.sql.gz"
p150:~ # echo $filename
/backup/sql/database_2003-08-28- 4.14.sql.gz
p150:~ # filename="/backup/sql/database_`date +%Y-%m-%d-%H.%M`.sql.gz"
p150:~ # echo $filename
/backup/sql/database_2003-08-28-04.17.sql.gz
Gruss Fritz
Re: DB-Backup-Skript
Posted: 2003-08-28 14:40
by s4fuser
Super. Das war es schon. Danke.
Re: DB-Backup-Skript
Posted: 2003-08-29 09:41
by phquest
wie hast du das mit dem automatischen schieben auf den backup ftp gemacht?
danke schonmal
phquest
Re: DB-Backup-Skript
Posted: 2003-08-29 13:38
by s4fuser
So:
Code: Select all
`which ncftpput` -V -u username -p passwort IP.des.Backup.Servers / /backup/sql/letzterdump.sql.gz
rm /backup/sql/letzterdump.sql.gz