Hacer copia de seguridad con codeigniter

S

Buenas, estoy haciendo un proyecto y para crear copias de seguridad de mi base de datos utilizo la clase dbutil de codeigniter.

Con el siguiente código genero todo el script de mi BD, pero quiero agregar al inicio de ese script una linea y no se como hacerlo. Dejo el método para crear el backup.

public function hacer_backup()
	{
		date_default_timezone_set("Europe/Madrid");
		// Carga la clase de utilidades de base de datos
		$this->load->dbutil();
		$fecha_hora = date("Ymd_His");

	$prefs = array(
        'tables'      => array(),  			// Arreglo de tablas para respaldar.
        'ignore'      => array(),           // Lista de tablas para omitir en la copia de seguridad
        'format'      => 'zip',             // gzip, zip, txt
        'filename'    => 'backup_'.$fecha_hora.'.sql',    // Nombre de archivo - NECESARIO SOLO CON ARCHIVOS ZIP
        'add_drop'    => TRUE,              // Agregar o no la sentencia DROP TABLE al archivo de respaldo
        'add_insert'  => TRUE,              // Agregar o no datos de INSERT al archivo de respaldo
        'newline'     => "\n"               // Caracter de nueva línea usado en el archivo de respaldo
    );

	// Crea una copia de seguridad de toda la base de datos y la asigna a una variable
	$copia_de_seguridad = $this->dbutil->backup($prefs); 

	//print_r($copia_de_seguridad);
	// Carga el asistente de archivos y escribe el archivo en su servidor
	$this->load->helper('file');


	if ( ! write_file('./backup/backup_'.$fecha_hora.'.zip', $copia_de_seguridad))
	{
	     $this->smarty->assign('error','No se ha podido crear la copia.');
	}
	else
	{
	    $this->smarty->assign('success','Copia creada satisfactoriamente');
	}

	// Carga el asistente de descarga y envía el archivo a su escritorio
	//$this->load->helper('download');
	//force_download('copia_de_seguridad.zip', $copia_de_seguridad);
	$this->smarty->view('index');
}

Como ya he dicho me genera un script con todo el contenido de mi base e datos, pero quiero agregar al inicio de ese script la siguiente linea: "SET FOREIGN_KEY_CHECKS = 0;"

A ver si alguien me echa una mano.

PiradoIV

¿Y si le cambias el format a 'txt' y le añades la linea antes de guardarlo?

1 respuesta
S

#2 mmm para añadirle la linea sería con tratamiento de ficheros no?

1 respuesta
PiradoIV

#3 Según la documentación de CodeIgniter, al llamar a $this->dbutil->backup(), puedes pasarle en el array de preferencias un format => 'txt', para que te devuelva el backup en formato de texto.

$backup = "SET FOREIGN_KEY_CHECKS = 0;\n".$this->dbutil->backup($prefs);

Luego guardarías el contenido de esa variable a un fichero (ver File Helper).

CodeIgniter también viene con una clase para trabajar con ficheros Zip, si lo necesitas:
Zip Encoding Class

1 1 respuesta
S

lo miro ahora mismo, muchas gracias!

1
S

#4 Ya he conseguido hacer que funcione como quería! gracias!

1 1 respuesta
PiradoIV

#6 de nada !

Usuarios habituales