Avatar billede krydset Nybegynder
04. januar 2004 - 16:08 Der er 17 kommentarer og
2 løsninger

Script der (automatisk) laver bacup af db

Hejsa er der nogen som har eller ved hvor man kan finde et php script som automatisk/manuelt laver backup af ens db. evt. på et givet tidspunkt.
det skal lægge en sql fil i en given mappe.

Mvh krydset
Avatar billede mc.lucifer Praktikant
04. januar 2004 - 16:11 #1
er lige med på en lytter

MC
Avatar billede the_legend Nybegynder
04. januar 2004 - 16:17 #2
lytter
Avatar billede krydset Nybegynder
04. januar 2004 - 16:29 #3
Så må vi jo bare vente, på der kommer en med en løsning :-)
Avatar billede fangel Nybegynder
04. januar 2004 - 16:31 #4
hmm - du kan relativt nemt hente alt data ud af en DB og gemme det i en database - det er lidt svære at finde ud af hvordan tabellen er sammensat - men det kan SAGTENS laves, se fx i phpmyadmin's kode for hvordan de gør det og så lav dit eget lille script der kun kan det...

sidder selv og laver et mini-phpmyadmin fordi jeg er træt af det absurde tempo det køre med (genererings tider på op til 30 sek) - netop pga de mange features, derfor laver jeg en skrabet version der så også ser lidt bedre ud ;) det vil nok komme til at indkludere en back-up funktion...

Morten
Avatar billede krydset Nybegynder
04. januar 2004 - 16:38 #5
Kan vi komme til at se det på det du har lavet når det er færdigt??
Avatar billede fangel Nybegynder
04. januar 2004 - 16:50 #6
lige 15 min, så kan du få en lille demo af hvad det kan ind til videre... (vise indhold af databaser / tabeller)

Morten
Avatar billede fangel Nybegynder
04. januar 2004 - 17:14 #7
http://mfa.ath.cx/projects/TableList/
host: localhost
user: exp
pass: (intet password)

så kan i se "test" databasen med to tabeller i...
pt kan scriptet ikke meget andet end at vise indhold, men mulighed for at slette / oprette databaser, tabeller og rækker arbejder jeg på pt...

desuden har det et ret funky's rescript/limitations system så man kan blokke for visse databaser / tabeller bliver vist ;)

Morten
Avatar billede repsac Nybegynder
05. januar 2004 - 01:27 #8
Antager at det er på en linux-maskine.
MySQL bliver distribueret med en funktion til at dump'e givne data: man mysqldump

Du kan ikke gøre det på et bestemt tidspunkt vha. PHP -- siden _skal_ loades førend PHP-koden udføres!
Løsningen er at lave et cron-job.

Det hele kan laves med meget få linjers shell script. Grimt at gøre det i PHP!
Avatar billede krydset Nybegynder
05. januar 2004 - 10:30 #9
er det noget du kan uddybe lidt mere??

evt en artikel om det, og ja det er linux red hat 7.3 maskine jeg har.
Avatar billede fcknet Nybegynder
05. januar 2004 - 16:14 #10
Jeg har et script liggende som kan lave en *.sql fil med backup af en database.
Interesseret?
Avatar billede krydset Nybegynder
05. januar 2004 - 16:47 #11
ja tak :-D
Kan du publicere det så kan jeg hente det
Avatar billede fcknet Nybegynder
05. januar 2004 - 16:55 #12
Finder den lige :) 2 sek
Avatar billede fcknet Nybegynder
05. januar 2004 - 16:56 #13
Kan du ikke smide lidt flere points på bordet end 15 ?
Avatar billede krydset Nybegynder
01. februar 2004 - 14:12 #14
Er du point narkoman, og sorry jeg ikke har været herinde før, syns man bør hjælpe hinanden om det så var gratis
Avatar billede fangel Nybegynder
01. februar 2004 - 16:50 #15
krydset -> har lavet lidt funktioner til backup af tabeller (til før omnævnte system)

de kan kun lave back-up af tabeller, men du kan nok godt selv lve en fucktion til at lave en backup af databaser (ellers skriv, så laver jeg et link til det fulde funktions bib.)

---
/*
* The next functions are used for creating a dump/backup of databases / tabels
*/

/*
* Function:    dumpTableCreate
* Param:    string $database
* Param:    string $table
* Returns    string with complete SQL for creating $database.$table
*/
function dumpTableCreate($database, $table){
  $create_resource = mysql_query("SHOW CREATE TABLE " . $database . "." . $table)or die(mysql_error());
  $createSQL = mysql_result($create_resource, 0, 1);

  return $createSQL . ";";
}

/*
* Function:    dumpTableData
* Param:    string $database
* Param:    string $table
* Param    boolean $complete - create complete inserts    Default: false
* Returns    string with complete SQL for inserting entire content of $database.$table
*/
function dumpTableData($database, $table, $complete=FALSE){
  $contentSQL = '';
  /*
  * If we have to create complete inserts
  */
  if($complete)
  {
    global $Fields;
    $field_list = '`' . implode("`, `", $Fields) . '`';
    $data_resource = mysql_query("SELECT " . $field_list . " FROM " . $database . "." . $table)or die(mysql_error());
    while($data_row = mysql_fetch_row($data_resource)){
      $contentSQL .= 'INSERT INTO ' . $table . ' (' . $field_list . ') VALUES (';
      foreach($data_row AS $data_field) $contentSQL .= "'" . str_replace("\n", '\n', str_replace("\r", '', $data_field)) . "', ";
      $contentSQL = substr($contentSQL, 0, -2) . ');' . "\n";
    }
  }
  /*
  * Short inserts
  */
  else{
    $data_resource = mysql_query("SELECT * FROM " . $database . "." . $table)or die(mysql_error());
    while($data_row = mysql_fetch_row($data_resource)){
      $contentSQL .= 'INSERT INTO ' . $table . ' (';
      foreach($data_row AS $data_field) $contentSQL .= "'" . str_replace("\n", '\n', str_replace("\r", '', $data_field)) . "', ";
      $contentSQL = substr($contentSQL, 0, -2) . ');' . "\n";
    }
  }

  return $contentSQL;
}

/*
* Function:    readDump
* Param:    string $dump - :IMPORTENT: newlines/carrige return must contain the newline (\n) char
* returns:    array containing all the different queries
*/
function readDump($dump){
  $dumpArray = explode("\n", $dump);
  $line = 0;
  $sql = '';
  while($line<count($dumpArray)){
    /*
    * If the line isn't a comment (read: starts with a #)
    */
    if(isset($dumpArray[$line][0]) AND trim($dumpArray[$line][0]) != '#'){
      $sql .= $dumpArray[$line];
      $line++;
      /*
      * If the line ends with a ';' we add the $sql tring to the $queries array and reset the $sql string
      */
      if(substr($sql, -1) == ';' OR !isset($dumpArray[($line + 1)])){
        $queries[] = $sql;
        $sql = '';
      }
    }
    else
      $line++;
  }

  return $queries;
}
---

at lave det auto. må du lege med cron for at få til at virke...

Morten
Avatar billede krydset Nybegynder
01. februar 2004 - 18:37 #16
ja i mellemtiden har jeg skiftet til en Winserver, men finder nok ud af noget, kan jo evt lave det som en funktion som køre når man laver noget specielt på siden eller noget fikst :-D
Avatar billede fangel Nybegynder
01. februar 2004 - 18:54 #17
jep... Windows kan ellers også noget... (opgave styring eller noget)

men kan du overskue hvad funktionerne gør?

Morten
Avatar billede krydset Nybegynder
21. februar 2004 - 23:15 #18
Ja de fleste af dem

Ikke den $dumpArray

;Men lig et svar du skal ha point
Avatar billede krydset Nybegynder
09. marts 2004 - 16:23 #19
lukker selv, men du må skrive hvis du vil ha point
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

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