Datenban Backup per PHP

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datenban Backup per PHP

    Hallo zusammen,

    ich möchte mit Hilfe eines PHP Skriptes welches ich als Cron ausführen möchte meine Datenbank täglich backuppen und in einer Textdatei speichern, wenn möglich gezippt.

    Ich bekomms aber irgendwie nicht hin.

    Ich habe schon folgendes probiert:

    <?php
    // Bitte hier Ihre Daten eintragen
    $host= 'xxxxxxx';
    $user= 'dbxxxxxx';
    $pass= 'xxxxxxxx';
    $db= 'dbxxxxxxx';

    // Befehl ausführen und in Zipfile speichern
    system(sprintf(
    'mysqldump --opt -h%s -u%s -p%s %s | gzip > %s/dumpDB.sql.gz',
    $host,
    $user,
    $pass,
    $db,
    getenv('DOCUMENT_ROOT')
    ));
    echo '+DONE';
    ?>


    außerdem war ich schon auf mysqldumper.de aber es geht einfach nicht.
    Kann mir jemand hier ein wenig Hilfestellung geben ?

    Danke

    Trashoverwrite
    -------
    Jetzt Wissen testen
    mit dem Tagesquiz

  • #2
    deine ansätze? fehlermeldungen? sonstiges?

    Kommentar


    • #3
      1. bitte editieren und php tags verwenden, damit man's besser lesen kann.
      2. was hat denn an deinen versuchen nicht geklappt?

      Kommentar


      • #4
        Bei den folgenden Code kam keine Fehlermeldung, done wurde ausgegeben aber keien Datei gespeichert.

        PHP-Code:
        <?php
        // Bitte hier Ihre Daten eintragen
        $host'xxxxxxx';
        $user'dbxxxxxx';
        $pass'xxxxxxxx';
        $db'dbxxxxxxx';

        // Befehl ausführen und in Zipfile speichern
        system(sprintf(
        'mysqldump --opt -h%s -u%s -p%s %s | gzip > %s/dumpDB.sql.gz',
        $host,
        $user,
        $pass,
        $db,
        getenv('DOCUMENT_ROOT')
        ));
        echo 
        '+DONE';
        ?>
        -------
        Jetzt Wissen testen
        mit dem Tagesquiz

        Kommentar


        • #5
          Die DB ist auch nciht so groß, dass es einen Timeout geben könnte nur zur Info
          -------
          Jetzt Wissen testen
          mit dem Tagesquiz

          Kommentar


          • #6
            du hast nichtmal überprüft, was system zurückgibt. what about debugging?

            Kommentar


            • #7
              Hätte ich gern aber ich bekomme keine Ausgabe !!
              Deshalb frag ich ja hier unter anderem nach !
              -------
              Jetzt Wissen testen
              mit dem Tagesquiz

              Kommentar


              • #8
                1. Was heißt hätte? Hast du mal
                PHP-Code:
                echo system('befehl'); 
                gemacht? Und da kam nix? Hast du dann mal befehl direkt auf der Konsole ausprobiert? Da sieht man nämlich neben stdout im Normalfall auch stderr.
                Wenns nicht klappt gleich mal ein "whereis mysqldump' hinterher ...

                2. Warum eigentlich mit sprintf()?
                PHP-Code:
                echo system("befehl $var1 ..."); 
                würde sprintf() als Fehlerquelle ausschließen.

                3. 'mysqldump -h<Leerzeichen>$host ...'

                Kommentar


                • #9
                  mysql dump befindet sich hier

                  /usr/bin/mysqldump
                  -------
                  Jetzt Wissen testen
                  mit dem Tagesquiz

                  Kommentar


                  • #10
                    wie mach ich das mit dem system direkt ausgeben ?
                    -------
                    Jetzt Wissen testen
                    mit dem Tagesquiz

                    Kommentar


                    • #11
                      Original geschrieben von trashoverwrite
                      wie mach ich das mit dem system direkt ausgeben ?
                      Ich versteh die Frage nicht! Weißt du nicht was ich mit "Konsole" meine? Eine Shell, ggf. über SSH. Alles böhmische Dörfer? Wie hast du denn dann herausbekommen, wo mysqldump liegt?

                      Kommentar


                      • #12
                        doch ic hweiß dass du shell meinst aber welchen Befehl soll ich da eingeben ??
                        -------
                        Jetzt Wissen testen
                        mit dem Tagesquiz

                        Kommentar


                        • #13
                          Was vor allem ist an meinem Skript falsch ??
                          -------
                          Jetzt Wissen testen
                          mit dem Tagesquiz

                          Kommentar


                          • #14
                            Du sollst den Befehl in einer Shell testen, den du system() übergibst. Dann wirst du wahrscheinlich auch sehen, was an deinem Script falsch ist - nämlich zumindest der Befehl. Zwischen den Optionen (-h, -u, -p) und deren Werten ($host, $user, $pass bzw. %s) fehlen Leerzeichen.

                            Der Unterschied zwischen dem Aufruf von system() und dem Testen in einer Shell ist, dass du in der Shell normalerweise auch stderr (Fehlermeldungen) zu sehen bekommst und bei 'echo system();' vielleicht nur stdout (Ausgabe).
                            Zuletzt geändert von onemorenerd; 12.06.2005, 20:25.

                            Kommentar


                            • #15
                              Also das Skript benutzen einige andere auch und da funktioniert es wohl, ich hab wohl ein anderes Problem
                              -------
                              Jetzt Wissen testen
                              mit dem Tagesquiz

                              Kommentar

                              Lädt...
                              X