Avatar billede brevkasserne Nybegynder
19. januar 2003 - 19:25 Der er 9 kommentarer og
1 løsning

Backup af database!

Er det muligt at lave en funktion så når admin er logget på systemet så kan ved at smække en diskette i a-drevet, bare klikke på et link og så gemmes der en backup-.sql-fil af databasen på disketten?
Så det kan gøres af en admin som ikke aner noget som helst omkring PHP, MySQL osv...?
Avatar billede bigo Nybegynder
19. januar 2003 - 20:54 #1
Lytter med..

Har set det kan gøres - kan det på min firewall.. men hvordan...
Avatar billede madsbrodersen Nybegynder
19. januar 2003 - 21:49 #2
Hvis du kan leve med at det ikke kan blive gemt på en diskette så kunne MySQL Backup Utility måske være noget. Det kører på Linux. Det kan både køres som et cron-job, men det kan også køres via browser - det er ikke muligt at vælge destinationen for hvor der gemmes. Det bliver sat i scriptes konfiguration, men det kunne jo være et skridt på vejen.
Avatar billede brevkasserne Nybegynder
19. januar 2003 - 23:01 #3
Det skal faktisk fungere ligesom med phpMyAdmin, hvor man vælger export osv.
Det skal nemlig kunne køre sammen med en hjemmeside!
Avatar billede bigo Nybegynder
19. januar 2003 - 23:47 #4
Avatar billede bigo Nybegynder
20. januar 2003 - 00:14 #5
virker ikke helt efter hensigten.. æv.. kan lave backup osv.. men ikke en man kan downloade.(sådan umiddelbart.)
Avatar billede bigo Nybegynder
20. januar 2003 - 00:26 #6
hmm.. fandt noget som kan bruges:

<?php

header("Content-type: application/octet-stream\r\nContent-Disposition: attachment; filename=$filename\r\n");

$fn=fopen("$filename" , "r");
fpassthru($fn);
?>

så må man kunne lave en backupfil lokalt på serveren og derefter hente den på denne måde..
Avatar billede avminarm Juniormester
20. januar 2003 - 11:40 #7
Dette her er et kode snip fra phpnuke - skal måske rettes (lidt) til, men skulle kunne det du ønsker.

<?php

/************************************************************************/
/* PHP-NUKE: Web Portal System                                          */
/* ===========================                                          */
/*                                                                      */
/* Save the database of a PHPNuke web site                              */
/*                                                                      */
/* Copyright (c) 2001 by Thomas Rudant (thomas.rudant@grunk.net)        */
/* http://www.grunk.net                                                */
/* http://www.securite-internet.org                                    */
/*                                    */
/* This program is free software. You can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation; either version 2 of the License.      */
/************************************************************************/

  $dbhost = "localhost";
  $dbuname = "";
  $dbpass = "";
  $dbname = "";

  @set_time_limit(600);
  $crlf="\n";

  // English Text   
  $strNoTablesFound = "No tables found in database.";
  $strHost = "Host";
  $strDatabase = "Database ";
  $strTableStructure = "Table structure for table";
  $strDumpingData = "Dumping data for table";
  $strError = "Error";
  $strSQLQuery = "SQL-query";
  $strMySQLSaid = "MySQL said: ";
  $strBack = "Back";
  $strFileName = "Save Database";
  $strName = "Database saved";
  $strDone = "On";
  $strat = "at";
  $strby = "by";
  $date_jour = date ("m-d-Y");       
       
  header("Content-disposition: filename=$strFileName $dbname $date_jour.sql");
  header("Content-type: application/octetstream");
  header("Pragma: no-cache");
  header("Expires: 0");
       
  // doing some DOS-CRLF magic...
  $client = getenv("HTTP_USER_AGENT");
  if(ereg('[^(]*\((.*)\)[^)]*',$client,$regs))
  {
    $os = $regs[1];
    // this looks better under WinX
    if (eregi("Win",$os))
      $crlf="\r\n";
  }
       
       
  function my_handler($sql_insert)
  {
    global $crlf;
    echo "$sql_insert;$crlf";
  }
       
  // Get the content of $table as a series of INSERT statements.
  // After every row, a custom callback function $handler gets called.
  // $handler must accept one parameter ($sql_insert);
  function get_table_content($db, $table, $handler)
  {
    $result = mysql_db_query($db, "SELECT * FROM $table") or mysql_die();
    $i = 0;
    while($row = mysql_fetch_row($result))
    {
      $table_list = "(";
       
      for($j=0; $j<mysql_num_fields($result);$j++)
                    $table_list .= mysql_field_name($result,$j).", ";
       
      $table_list = substr($table_list,0,-2);
      $table_list .= ")";
       
      if(isset($GLOBALS["showcolumns"]))
        $schema_insert = "INSERT INTO $table $table_list VALUES (";
      else
        $schema_insert = "INSERT INTO $table VALUES (";
       
      for($j=0; $j<mysql_num_fields($result);$j++)
      {
        if(!isset($row[$j]))
          $schema_insert .= " NULL,";
        elseif($row[$j] != "")
          $schema_insert .= " '".addslashes($row[$j])."',";
        else
          $schema_insert .= " '',";
      }
      $schema_insert = ereg_replace(",$", "", $schema_insert);
      $schema_insert .= ")";
      $handler(trim($schema_insert));
      $i++;
    }
    return (true);
  }
       
  // Return $table's CREATE definition
  // Returns a string containing the CREATE statement on success
  function get_table_def($db, $table, $crlf)
  {
    $schema_create = "";
    $schema_create .= "CREATE TABLE $table ($crlf";
       
    $result = mysql_db_query($db, "SHOW FIELDS FROM $table") or mysql_die();
    while($row = mysql_fetch_array($result))
    {
      $schema_create .= "  $row[Field] $row[Type]";
       
      if(isset($row["Default"]) && (!empty($row["Default"]) || $row["Default"] == "0"))
        $schema_create .= " DEFAULT '$row[Default]'";
      if($row["Null"] != "YES")
        $schema_create .= " NOT NULL";
      if($row["Extra"] != "")
        $schema_create .= " $row[Extra]";
      $schema_create .= ",$crlf";
    }
    $schema_create = ereg_replace(",".$crlf."$", "", $schema_create);
    $result = mysql_db_query($db, "SHOW KEYS FROM $table") or mysql_die();
    while($row = mysql_fetch_array($result))
    {
      $kname=$row['Key_name'];
      if(($kname != "PRIMARY") && ($row['Non_unique'] == 0))
        $kname="UNIQUE|$kname";
      if(!isset($index[$kname]))
        $index[$kname] = array();
      $index[$kname][] = $row['Column_name'];
    }
       
    while(list($x, $columns) = @each($index))
    {
      $schema_create .= ",$crlf";
      if($x == "PRIMARY")
        $schema_create .= "  PRIMARY KEY (" . implode($columns, ", ") . ")";
      elseif (substr($x,0,6) == "UNIQUE")
        $schema_create .= "  UNIQUE ".substr($x,7)." (" . implode($columns, ", ") . ")";
      else
        $schema_create .= "  KEY $x (" . implode($columns, ", ") . ")";
    }
       
    $schema_create .= "$crlf)";
    return (stripslashes($schema_create));
  }
       
  function mysql_die($error = "")
  {
    echo "<b> $strError </b><p>";
    if(isset($sql_query) && !empty($sql_query))
    {
      echo "$strSQLQuery: <pre>$sql_query</pre><p>";
    }
    if(empty($error))
      echo $strMySQLSaid.mysql_error();
    else
      echo $strMySQLSaid.$error;
    echo "<br><a href=\"java script:history.go(-1)\">$strBack</a>";
    exit;
  }
       
  global $dbhost, $dbuname, $dbpass, $dbname;
  mysql_pconnect($dbhost, $dbuname, $dbpass);
  @mysql_select_db("$dbname") or die ("Unable to select database");
       
  $tables = mysql_list_tables($dbname);
       
  $num_tables = @mysql_numrows($tables);
  if($num_tables == 0)
  {
    echo $strNoTablesFound;
  }
  else
  {
    $i = 0;
    $heure_jour = date ("H:i");
    print "# ========================================================$crlf";
    print "#$crlf";
    print "# $strName : $dbname$crlf";
    print "# $strDone $date_jour $strat $heure_jour $strby $name !$crlf";
    print "#$crlf";
    print "# ========================================================$crlf";
    print "$crlf";
           
    while($i < $num_tables)
    {
      $table = mysql_tablename($tables, $i);
       
      print $crlf;
      print "# --------------------------------------------------------$crlf";
      print "#$crlf";
      print "# $strTableStructure '$table'$crlf";
      print "#$crlf";
      print $crlf;
       
      echo get_table_def($dbname, $table, $crlf).";$crlf$crlf";
               
      print "#$crlf";
      print "# $strDumpingData '$table'$crlf";
      print "#$crlf";
      print $crlf;
           
      get_table_content($dbname, $table, "my_handler");
       
      $i++;
    }
  }
       
  //Header("Location: admin.php?op=adminMain");
}
?>
Avatar billede brevkasserne Nybegynder
21. januar 2003 - 16:21 #8
Det er godt nok noget uoverskueligt synes jeg...
Avatar billede avminarm Juniormester
21. januar 2003 - 23:33 #9
tjaaa, men det kan det du efterspørger - du skal nok bare udfylde

  $dbhost = "localhost";
  $dbuname = "";
  $dbpass = "";
  $dbname = "";
Avatar billede brevkasserne Nybegynder
26. januar 2003 - 12:38 #10
Jeg prøver at se hvad jeg kan få ud af det.
Takker for svar!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester