bash skript für MySQL backup

Backup, Restore und Transfer von Daten
Post Reply
native
Posts: 119
Joined: 2003-11-18 10:38
 

bash skript für MySQL backup

Post 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.
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten
Contact:
 

Re: bash skript für MySQL backup

Post by captaincrunch »

Man nutzt auch absolute Pfade in Scripten (e.g. /usr/bin/gzip). ;)
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
native
Posts: 119
Joined: 2003-11-18 10:38
 

Re: bash skript für MySQL backup

Post 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?
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten
Contact:
 

Re: bash skript für MySQL backup

Post by captaincrunch »

Du rufst die Programme ja auch immer noch direkt (Beispiel: mysqldump statt /usr/bin/mysqldump) auf.
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
native
Posts: 119
Joined: 2003-11-18 10:38
 

Re: bash skript für MySQL backup

Post 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

?
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten
Contact:
 

Re: bash skript für MySQL backup

Post by captaincrunch »

date hat immer noch keinen absoluten Pfad.
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
native
Posts: 119
Joined: 2003-11-18 10:38
 

Re: bash skript für MySQL backup

Post 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?
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten
Contact:
 

Re: bash skript für MySQL backup

Post by captaincrunch »

Nutz den Wie-Ei.
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
kase
Posts: 1031
Joined: 2002-10-14 22:56
 

Re: bash skript für MySQL backup

Post by kase »

Denke dran, dass `date` an 3 Stellen mit einem absoluten Path "auszustatten" ;)
native
Posts: 119
Joined: 2003-11-18 10:38
 

Re: bash skript für MySQL backup

Post 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.
Post Reply