elexender: Cronjob + DB Sicherung + Mail

Hallo,

ich will - ohne weiteres - aus einem Cronjob die DB sichern und die Sicherungsdatei per Mail versenden. Also z.B. so:

*/4 * * * * mysqldump -u user -pxxxxx dbname > fail-´date´.sql | mail post@serveradmin.tld

Das klappt aber nicht so. Die Datei wird erstellt, aber die Mail ist leer. Es soll also keine sh Datei erstellt werden und kein Script (PHP oder PERL o.A.).

Kennt jemand die Lösung, wo man mit 1-2 Befehlen die DB-Sicherung in Datei machen kann und per Mail versenden? Oder evtl. nur per Email versenden.

Thx. Alex.

  1. Hi,

    Kennt jemand die Lösung, wo man mit 1-2 Befehlen die DB-Sicherung in Datei machen kann und per Mail versenden? Oder evtl. nur per Email versenden.

    Grundsätzlich schreibt man das in ein Shellscript und ruft dieses auf.
    Ansonsten kommt es auf deinen Mailserver an, wie du mails mit Anhang versendest. Sendmail arbeitet etwas anders, als Postfix, evtl. wäre mutt in verbindung mit einer pipe oder mail eine Lösung. Die entsprechende Mainpage hilft dir weiter.

    Wenn du kein Programm hast, an das du per Kommandozeile einen Anhang kleben kannst, musst du deinen Anhang selst base64 kodieren und den Header entsprechend zusammenbauen. Aber wie gesagt, das hängt davon ab, was du hast, nehmen willst und kannst.

  2. Nachtrag:

    evtl. hilft dir bei Mail

    ~r{filename}
    Read the named file into the message.

    weiter. Kann aber sein, das der Dump dann nicht als Anhang, sondern als Klartext in deiner Mail steht

  3. echo $begrüßung;

    Hallo,

    ich will - ohne weiteres - aus einem Cronjob die DB sichern und die Sicherungsdatei per Mail versenden. Also z.B. so:

    */4 * * * * mysqldump -u user -pxxxxx dbname > fail-´date´.sql | mail post@serveradmin.tld

    Unix ist ein Mehrbenutzersystem, und es ist dort üblich, dass nicht das gesamte System mit der gleichen Pfad(PATH)-Einstellung läuft. Gerade abseits der Kommandozeile muss man oft beim Aufrufen von Befehlen/Programmen die vollständige Pfadangabe notieren, damit sie gefunden werden.

    Wenn eine leere Mail versendet wurde, konnte vielleicht mysqldump nicht aufgerufen werden. Schau doch mal nach, ob der Benutzer, der den Cronjob eingerichtet hat, eine Mail mit einer Fehlermeldung bekommen hat.

    echo "$verabschiedung $name";

    1. Wenn eine leere Mail versendet wurde, konnte vielleicht mysqldump nicht aufgerufen werden. Schau doch mal nach, ob der Benutzer, der den Cronjob eingerichtet hat, eine Mail mit einer Fehlermeldung bekommen hat.

      Die Dump-Datei wird erstellt. Lediglich die versendete Mail ist leer.

      Gruss. Alex.

      1. echo $begrüßung;

        Die Dump-Datei wird erstellt. Lediglich die versendete Mail ist leer.

        Gut, wenn man genauer hinsieht*), wird auch der Fehler deutlich. Du leitest die Standardausgabe von mysqldump in eine Datei um. Die Pipe verbindet die Standardausgabe des vorigen Programms mit der Standardeingabe des nachfolgenden. Aber über diesen Kanal kann ja nichts kommen, weil du ihn umgeleitet hast.

        echo "$verabschiedung $name";

        *) Nachricht an mich selbst: öfter genauer hinsehen