Page 1 of 1

bash skript für MySQL backup

Posted: 2004-01-06 11:24
by native
hallo, ich habe mir ein bash skript geschrieben, welches ein backup meiner MySQL db machen soll. führe ich die einzelnen befehle manuell aus, klappt alles prima, innerhalb das skriptes aber nicht. hier der code:

Code: Select all

#!/bin/sh

# backup of MySQL database; 
mysqldump -hlocalhost -uUSER -pPASS MeinDB | gzip -c > WHG-MySQL-BACKUP-`date +%Y.%m.%d`.sql.gz && echo "MySQL server backup " | mutt -s "WHG DB Backup " -a WHG-MySQL-BACKUP-`date +%Y.%m.%d`.sql.gz "meine@domain.com"

# delete the backup
rm â??f WHG-MySQL-BACKUP-`date +%Y.%m.%d`.sql.gz
führe ich das skript aus, bekomme ich folgenden fehler:

gzip: +%Y.%m.%d.sql.gz: No such file or directory
/root/backup_routine.sh: -s: command not found

wie gesagt, gebe ich den befehl manuell ein, klappt es prima, kopiere ich ihn ins skript und führe es aus, kommt dieser fehler. kann mir jemand sagen, was ich falsch mache? vielen dank!

-native.

Re: bash skript für MySQL backup

Posted: 2004-01-06 11:31
by captaincrunch
Man nutzt auch absolute Pfade in Scripten (e.g. /usr/bin/gzip). ;)

Re: bash skript für MySQL backup

Posted: 2004-01-06 11:48
by native
hm, ok, meine linux kenntnisse sind noch ziemlich rudimentär, ich hab es so umgeschrieben:

Code: Select all

#!/bin/sh

# backup of MySQL database;
#!/bin/sh

# backup of MySQL database; 
mysqldump -hlocalhost -uUSER -pPASS MeineDB | gzip -c > /root/WHG-MySQL-BACKUP-`date +%Y.%m.%d`.sql.gz && echo "MySQL server backup " | mutt -s "WHG DB Backup " -a /root/WHG-MySQL-BACKUP-`date +%Y.%m.%d`.sql.gz "meine@domain.com"

# delete the backup
rm â??f /root/WHG-MySQL-BACKUP-`date +%Y.%m.%d`.sql.gz
bekomme aber den gleichen fehler. oder hab ich was falsch verstanden?

Re: bash skript für MySQL backup

Posted: 2004-01-06 11:52
by captaincrunch
Du rufst die Programme ja auch immer noch direkt (Beispiel: mysqldump statt /usr/bin/mysqldump) auf.

Re: bash skript für MySQL backup

Posted: 2004-01-06 12:04
by native
ok, verstehe. geht aber immer noch nicht.

Code: Select all

# backup of MySQL database; 
/usr/bin/mysqldump -hlocalhost -uUSER -pPASS MeineDB | /bin/gzip -c > /root/WHG-MySQL-BACKUP-`date +%Y.%m.%d`.sql.gz && echo "MySQL server backup " | /usr/bin/mutt -s "WHG DB Backup " -a /root/WHG-MySQL-BACKUP-`date +%Y.%m.%d`.sql.gz "meine@domain.com"
fehler: gzip: +%Y.%m.%d.sql.gz: No such file or directory

?

Re: bash skript für MySQL backup

Posted: 2004-01-06 12:08
by captaincrunch
date hat immer noch keinen absoluten Pfad.

Re: bash skript für MySQL backup

Posted: 2004-01-06 12:16
by native
in die zeile mit "/bin/date" müsste doch eigentlich ein " ` ", allerdings bekomme ich das mit joe nicht rein. kopier ich es aus dem WIN txt editor, geht das zeichen verloren. somit bekomme ich einen syntax error. ein vorschlag?

Re: bash skript für MySQL backup

Posted: 2004-01-06 12:21
by captaincrunch
Nutz den Wie-Ei.

Re: bash skript für MySQL backup

Posted: 2004-01-06 18:05
by kase
Denke dran, dass `date` an 3 Stellen mit einem absoluten Path "auszustatten" ;)

Re: bash skript für MySQL backup

Posted: 2004-01-06 18:53
by native
jo, hab drangedacht. der vollständigkeit wegen und für die nachwelt hier das vollständige, lauffähige skript:

Code: Select all

#!/bin/sh

# backup of MySQL database
/usr/bin/mysqldump -hlocalhost -uUSER -pPASS MeineDB | /bin/gzip -c > /root/MySQL-BACKUP-`/bin/date +%Y.%m.%d`.sql.gz && echo "MySQL server backup " | /usr/bin/mutt -s " DB Backup " -a /root/MySQL-BACKUP-`/bin/date +%Y.%m.%d`.sql.gz "meine@domain.com"

# delete the backup
rm -f /root/MySQL-BACKUP-`/bin/date +%Y.%m.%d`.sql.gz
mfg,
-native.