Datenban Backup per PHP

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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?

    Comment


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

      Comment


      • #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

        Comment


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

          Comment


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

            Comment


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

              Comment


              • #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 ...'

                Comment


                • #9
                  mysql dump befindet sich hier

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

                  Comment


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

                    Comment


                    • #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?

                      Comment


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

                        Comment


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

                          Comment


                          • #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).
                            Last edited by onemorenerd; 12-06-2005, 20:25.

                            Comment


                            • #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

                              Comment

                              Working...
                              X