Hi... suche ein Script was mir meine verschiedenen MySQL Datenbanken sichert. Es sollte: 1. Für jeden DB ein Verzeichnis anlegen (wenn nötig). 2. Dort täglich ein neues SQL Dump der DB ablegen (so in der Form: datebase_DD-MM-YY.sql) 3. In dem jew. Verzeichnis alle SQL Dumps älter als zb. 10 Tage löschen. Ich möchte nicht so gerne ein SQL Dump machen, das alle DBs enthält, da ich die Möglichkeit haben möchte einzelne DBs wiederherzustellen... Hat so ein Script einer schonmal geschrieben oder wisst ihr wie ich weitere Infos komme?? Wäre nett wenn mir jem helfen könnte... -- Mit freundlichem Gruß, Johannes Tyra
Hi, * Am 24.03.2004 (10:31) schrieb Johannes Tyra:
1. Für jeden DB ein Verzeichnis anlegen (wenn nötig).
In etwa so etwas wie for db in `echo "show databases;" | mysql do mkdir /backup/$db done
2. Dort täglich ein neues SQL Dump der DB ablegen (so in der Form: datebase_DD-MM-YY.sql)
DATUM=`date '+%Y-%m-%d'` Zusammen ergibt das in etwa das: for db in `echo "show databases;" | mysql do mkdir /backup/$db mysqldump $db > /backup/$db/$db_$DATUM.sql done
3. In dem jew. Verzeichnis alle SQL Dumps älter als zb. 10 Tage löschen.
Fällt mir so aus dem Stegreif nicht ein, sollte aber kein Problem sein -> Google, so selten sollte die Frage nicht sein. Ach ja: Du mußt natürlich eventuell Nutzer/Passwort übergeben (Berechtigungen für Dump!!) HTH, -sa -- sa at programmers-world dot com http://www.livingit.de 12:00 Internet sites: http://www.not2long.net - Make long links short Boomarks online: http://www.mobile-bookmarks.info
Hi, * Am 24.03.2004 (12:06) schrieb Sascha Andres:
for db in `echo "show databases;" | mysql do mkdir /backup/$db mysqldump $db > /backup/$db/$db_$DATUM.sql done
Besser: for db in `echo "show databases;" | mysql` do mkdir /backup/$db mysqldump $db > /backup/$db/$db_$DATUM.sql done Zuerst vergessen und dann C&P... -sa -- sa at programmers-world dot com http://www.livingit.de 12:10 Internet sites: http://www.not2long.net - Make long links short Boomarks online: http://www.mobile-bookmarks.info
Danke schonmal...
Besser:
for db in `echo "show databases;" | mysql` do mkdir /backup/$db mysqldump $db > /backup/$db/$db_$DATUM.sql done
Zuerst vergessen und dann C&P...
Yoo. schon erledigt... ------ #!/bin/bash # Backup Script for MySQL DBs DIR='/var/backup/sql' DATUM=`date '+%Y-%m-%d'` for db in `echo "show databases;" | mysql` do mkdir $DIR/$db mysqldump $db > $DIR/$db/$db_$DATUM.sql done ------ Iss das so ok?? Jezz brauch ichnur noch den Befehl zum löschen... werde das Script gleich mal texten... Greetz... Johannes
Hi nochmal...
Jezz brauch ichnur noch den Befehl zum löschen... werde das Script gleich mal texten...
klappt wunderbar... die print Befehle hab ich mal zum Debuggen drin gelassen. #!/bin/bash # Backup Script for MySQL DBs DIR='/var/backup/sql' DATUM=`date '+%d-%m-%Y'` PASS='xxxxxxx' USER='root' DAYS=10 for db in `echo "show databases;" | mysql -u $USER --password=$PASS` do if [ "$db" != "Database" ] then printf "Sicherung für: $db " if [ ! -d $DIR/$db ] then mkdir $DIR/$db fi find $DIR/$db -mtime +$DAYS -exec ls -l {} \; find $DIR/$db -mtime +$DAYS -exec rm {} \; mysqldump -u $USER --password=$PASS --opt $db > $DIR/$db/$db_$DATUM.sql printf "($db_$DATUM.sql) ...ok\n" fi done exit 0 -- Johannes
Hallo, Am Wed, 24 Mar 2004, Johannes Tyra schrieb:
DIR='/var/backup/sql' DATUM=`date '+%d-%m-%Y'` PASS='xxxxxxx' USER='root' DAYS=10
for db in `echo "show databases;" | mysql -u $USER --password=$PASS`
Koennte man evtl. durch 'echo .. | mysql .. | while read db' ersetzen.
do if [ "$db" != "Database" ] then printf "Sicherung für: $db "
if [ ! -d $DIR/$db ] then mkdir $DIR/$db fi
find $DIR/$db -mtime +$DAYS -exec ls -l {} \; find $DIR/$db -mtime +$DAYS -exec rm {} \;
mysqldump -u $USER --password=$PASS --opt $db > $DIR/$db/$db_$DATUM.sql
Besser vielleicht: test -d "${DIR}/${db}" || mkdir -p "${DIR}/${db}" find "${DIR}/${db}" -mtime "+$DAYS" -exec ls -l {} \; find "${DIR}/${db}" -mtime "+$DAYS" -exec rm {} \; mysqldump -u "$USER" --password="$PASS" --opt "$db" > "${DIR}/${db}/${db}_${DATUM}.sql" -dnh -- If you haven't got time to RTFM, you haven't got time to whine on this mailing list.
participants (3)
-
David Haller
-
Johannes Tyra
-
Sascha Andres