PHP klasa za izradu backupa MySQL baze/baza (predviđena za CRON upotrebu). Direktorij u kojoj se koristi klasa mora biti rwx rx rx (755) jer se u suprotnom pojavi Internal server error (500). Ukoliko je server drugačije konfiguriran, onda je potrebno da direktorij ima rwxrwxrwx (777) prem.
Nakon što se skripta uspješno izvrši, napraviti će novi direktorij naziva dan-mjesec-godina u koji će spremiti gzip-ane SQL dumpove.
Licenca je GPL.
Download PHP class
<?php
/**
* Project: qsDBbackup
* File: qsdbbackup.class.php
* Date: 29.11.2005.
*
* Klasa za izradu backup-a MySQL baze/baza podataka.
* Primjer:
*
* require('qsdbbackup.class.php');
* $backup = new qsDBbackup;
* $backup->mysql_username="myuser";
* $backup->mysql_password="mypassword";
* $backup->mysql_db = array("db1","db2","dbN");
* $backup->doBackup();
*
* mysql_db uvijek mora biti array! Ako je samo jedna baza
* onda je sintaksa: $backup->mysql_db = array("db");
*
* Output ([datum]=D-M-Y):
* ./[datum]/[db_name].sql-[datum].gz
*
* @link http://www.quercus-lab.com/dokumenti/qsdbbackup/
* @copyright 2005-2006 Quercus Lab
* @author Davorin Vlasic <davorin (aa) quercus-lab (..) com>
* @package qsDBbackup
* @version 0.1
*/
class qsDBbackup {
var $mysql_username; // @var string
var $mysql_password; // @var string
var $mysql_db; // @var array
function doBackup() {
if(
!$this->mysql_username
|| !$this->mysql_password
|| !$this->mysql_db
){
// niste podesili parametre (user,pass,db)
return -1;
} else {
$mysql_user=$this->mysql_username;
$mysql_pass=$this->mysql_password;
$db_name_arr=$this->mysql_db;
for($i=0;$i<count($db_name_arr);$i++){
$db_name=$db_name_arr[$i];
$cmd_dump="mysqldump -u$mysql_user -p$mysql_pass $db_name
> $db_name.sql";
$cmd_gzip="gzip $db_name.sql";
$cmd_mkdir="mkdir `/bin/date +%d-%m-%Y`";
$cmd_mv="mv $db_name.sql.gz `/bin/date +%d-%m-%Y`/`/bin
/date +$db_name.sql-%d%m%Y.gz`";
$izlaz = exec($cmd_dump);
$izlaz .= exec($cmd_gzip);
$izlaz .= exec($cmd_mkdir);
}
return $izlaz;
}
}
}
?>
|