Archief - MYSQL: Backups downloaden

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Zelete

Legacy Member
Hoy

Ik heb een WordPress blog gehost bij www.sohosted.be, een IIS server dus voor alle duidelijkheid. We hebben bij SoHosted zelf geen opties voor crons (wat normaal Linux is zeker?). Nu op zich is dat geen probleem, ik heb een account gemaakt op www.webcron.org en dat werkt perfect.

Nu heb ik ook een PHP scriptje gevonden dat een backup maakt van mijn hele WordPress database.

Het probleem is nu dat dit scriptje enkel de backup in een mapje op de server zelf zet. Als er dus een server crash is ofzo, met data loss, dan ben ik alles kwijt.

Ik heb hier een server staan die 24/7 opstaat (TeamSpeak enzo) en daar heb ik eens Free Download Manager opgezet, dan heb ik een schedule gemaakt om elke dag de backup te downloaden. Maar dit programma overschrijft telkens de backup. Dus stel, mijn website wordt gehackt ofzo, ik ben een week niet thuis, natuurlijk heb ik dan een backup van de "gehackte" database waar ik niets mee ben.

Nu mijn vraag --> Is er een beter programma dat bijvoorbeeld de file hernoemt en er de datum achterzet ofzo?

Jullie mogen mij ook betere manieren uitleggen enzo, ik heb er waarschijnlijk veel minder vestand van dan jullie. Zoals bijvoorbeeld een email sturen met de backup als attachment (zou beter zijn zelfs).

Ik zal bij deze ook even het scriptje zelf in code zetten, zodat jullie beter inzien met wat ik te maken heb:

Code:
<head>
<meta name="ROBOTS" content="noINDEX, noFOLLOW">
<title>MySQL Backupmodul by Transatlantic-Web</title>
</head>
<?php 
/*******************************************/
/* MySQL Datenbankbackup                   */
/* Modul "dump.php"                        */
/* Version 1.0 , GNU TAW24 Germany         */
/* Author Transatlantic-Web                */
/* http://www.taw24.de                     */
/*                                         */
/* modified by benjamin klatt              */
/*  <[email protected]>           */
/*******************************************/

//  -------------------------------------------------------------------------------------
include ("dump_cfg.inc");
include ("lang_" .$lang.".inc");

echo "<font size=+1><b>".$title."</b><br>Servername: '".$host."'</font><br>";
echo $system.php_uname().$phpversion.phpversion(). "<p>";

// Alle Datenbanken auf dem Server suchen
echo "<table border=1>";
echo "<tr><td><b>".$dbname."</b></td><td><b>".$tcount."</b></td><td><b>".$size."</b></td><td><b>".$status."</b></td></tr>";
echo "<tr><td>&nbsp;&nbsp;$db1</td>";
 $database = $db1;
 $zaehler = 0;
 $start=0;


// generate filesuffix if it should be used
if($use_date == 1)
{
    $datum = "_".date(dmY);    
}
else
{
    $datum = "";    
}

 $file_name = $path.$database.$datum.".sql";
 $file_old = $path.$database.".old";
 $aktime=date("d-m-Y H:i");
 $db_name = $dump1."$aktime\n";
 $db_name.= $dump2."$database \r\n";
 if (file_exists($file_name)){unlink($file_name);}  
 $fd = fopen($file_name,"a+");
 fwrite($fd, $db_name); 
 fclose($fd);     
 
// Tabellenname Array auslesen und aufbauen

$tbl_array = array(); $c = 0;
$result2 = mysql_list_tables($database);
for($x=0; $x<mysql_num_rows($result2); $x++) 
{     
        $tabelle = mysql_tablename($result2,$x);
         if ($tabelle <>"") {
                              $tbl_array[$c] = mysql_tablename($result2,$x); $c++;$zaehler++;
                             }

}                                 
echo "<td align=right>&nbsp;".$zaehler."&nbsp;&nbsp;</td>";
flush();
// Start Ausgabe und Berechnung 
for ($y = 0; $y < $c; $y++){  
    $tabelle=$tbl_array[$y];

// Struktur der Tabelle einlesen

    $def = "";
    $def .= "DROP TABLE IF EXISTS $tabelle; \n";
    $def .= "CREATE TABLE $tabelle (\n"; 
    $result3 = mysql_db_query($database, "SHOW FIELDS FROM $tabelle",$conn_id);
    while($row = mysql_fetch_array($result3)) {
        $def .= "    $row[Field] $row[Type]";
        if ($row["Default"] != "") $def .= " DEFAULT '$row[Default]'";
        if ($row["Null"] != "YES") $def .= " NOT NULL";
           if ($row[Extra] != "") $def .= " $row[Extra]";
            $def .= ",\n";
     }
     $def = ereg_replace(",\n$","", $def);
     $result3 = mysql_db_query($database, "SHOW KEYS FROM $tabelle",$conn_id);
     while($row = mysql_fetch_array($result3)) {
          $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($xy, $columns) = @each($index)) {
          $def .= ",\n";
          if($xy == "PRIMARY") $def .= "   PRIMARY KEY (" . implode($columns, ", ") . ")";
          else if (substr($xy,0,6) == "UNIQUE") $def .= "   UNIQUE ".substr($xy,7)." (" . implode($columns, ", ") . ")";
          else $def .= "   KEY $xy (" . implode($columns, ", ") . ")";
     }

     $def .= "\n); \n";
     
// Ende Struktur Modul
$db = @mysql_select_db($database,$conn_id); 

$tabelle="".$tabelle; 
$ergebnis=array();
$tbl_name = $dump3."$tabelle \r\n"; 
$fd = fopen($file_name,"a+"); 
fwrite($fd, $tbl_name.$def); 
fclose($fd);

    unset($data);
if ($tabelle>""){  
    $ergebnis[]=@mysql_select_db($database,$conn_id); 
    $result=mysql_query("select * from $tabelle"); 
        $anzahl= mysql_num_rows ($result); 
    $spaltenzahl = mysql_num_fields($result); 
        for ($i=0;$i<$anzahl;$i++) { 
                $zeile=mysql_fetch_array($result); 
        
                $data.="insert into $tabelle ("; 
        for ($spalte = 0; $spalte < $spaltenzahl;$spalte++) { 
              $feldname = mysql_field_name($result, $spalte); 
              if($spalte == ($spaltenzahl - 1)) 
          { 
            $data.= $feldname; 
          } 
          else 
          { 
            $data.= $feldname.","; 
          } 
        }; 
        $data.=") VALUES ("; 
                for ($k=0;$k < $spaltenzahl;$k++){ 
          if($k == ($spaltenzahl - 1)) 
          { 
                        $data.="'".addslashes($zeile[$k])."'"; 
                  } 
          else 
          { 
                        $data.="'".addslashes($zeile[$k])."',"; 
                  } 
        } 
                $data.= ");\n"; 
        } 
$data.= "\n";
} 
else 
{ 
      $ergebnis[]= $err; 
} 

$zeit = (date("d_m_Y")); 
$fd = fopen($file_name,"a+"); 
$zeit = time() - $start;
$speed = $speed+$zeit;

for ($i3=0;$i3<count($ergebnis);$i3++){ 

        fwrite($fd, $data); 
        fclose($fd);    
} 
}
$groesse = filesize($file_name) / 1024;
$place =  $place+$groesse;

echo "<td align=right>&nbsp;&nbsp;<I>".number_format($groesse,2)."</I> KB&nbsp;&nbsp;</td><td align=center> OK! </td></tr>";
echo "</table><p>".$info."<I>".$path."<BR>".$allsize.number_format($place,2)."</I> KB <p>";
echo $copyright;

// <---

$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: [email protected]\n";

mail("[email protected]", "Backup database OK", "Backup online...<br><br><font color='#FF0000'>$_SERVER[REMOTE_ADDR]</font>", $headers);

// -->

exit;
?>

?>
Zoals jullie zien heb ik onderaan al een mail() functie die goed werkt. Ik heb echter geen idee hoe ik er attachments enzo bij doe.

Alle suggesties zijn dus welkom :)

Met vriendelijke groeten

RpR

Legacy Member
ik zou gewoon ftpen en file eraf halen dan file hernoemen naar datum.
Gaat perfect met batch was hier recent zelf op het forum.

demon326

Legacy Member
ik ken anders ooknog een mysql script met iets meer functies maar dan moet perl installed zijn en enkele extra dingen kwa perl :)

maar dan kunt ge ten eerste al auto naar een ftp naar keuze schrijven en nog veel andere functies
http://www.mysqldumper.de/en/

eenmaal het werkt moet ge niks meer doen :D.

en er is dus ook support voor meerdere backups.. wij hebben 2x/dag een backup en die word telkens met de naam en datum genoemd...

Zelete

Legacy Member
@ RpR, zal nogeens goed zoeken :)

@ benny, dankuwel, direct eens proberen. Perl ken ik eigenlijk helemaal niks van :p

EDIT: opgelost, bedankt benny, goed scriptje, juist wat ik zocht :)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan