elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Ayuda backup php mysql
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda backup php mysql  (Leído 3,658 veces)
aprendiz_web

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Ayuda backup php mysql
« en: 10 Diciembre 2013, 08:43 am »

Alguien me podria ayudar a respaldar una base de datos y despues restaurarla
Porfavor


En línea

el-brujo
ehn
***
Desconectado Desconectado

Mensajes: 21.586


La libertad no se suplica, se conquista


Ver Perfil WWW
Re: Ayuda backup php mysql
« Respuesta #1 en: 10 Diciembre 2013, 10:00 am »

¿Respaldar usando phpMyAdmin, o vía comandos o usando algún otro programa tipo Navicat?

¿Qué tipo de base de datos quieres hacer copia de seguridad? ¿De un foro?

¿Respaldo local o remoto?

Investiga sobre el comando mysqldump o mysqlhotcopy si usas tablas en MyIsam.

Ejemplo mysqlhotcopy Remoto:
Código:
/var/local/mysql/bin/mysqlhotcopy --method=scp --user=mysql --password=pass base_datos remoteuser@ip:/home/mysql


« Última modificación: 10 Diciembre 2013, 10:02 am por el-brujo » En línea

aprendiz_web

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Ayuda backup php mysql
« Respuesta #2 en: 10 Diciembre 2013, 17:01 pm »

Gracias: el-brujo

Bueno investigando y buscando ya tengo como hacer el respaldo de las base de datos usando php en mysql,


Ahora lo que no puedo es hacer el restore es decir cargar el archivo sql para restaurar la base de datos, esto también tengo que hacerlo mediante php

Espero me puedas ayudar
En línea

:ohk<any>


Desconectado Desconectado

Mensajes: 1.744


Yo lo que quiero que me salga bien es la vida.


Ver Perfil WWW
Re: Ayuda backup php mysql
« Respuesta #3 en: 10 Diciembre 2013, 17:03 pm »

Asumo que necesitas un código que te ayude en esto no?

Código
  1. <?php
  2. class Backup{
  3.    private $usuario;
  4.    private $pass;
  5.    private $database;
  6.    private $servidor;
  7.    private $nombre_archivo;
  8.    private $ruta_carpeta;
  9.  
  10.    public function __construct($db = 'basededatos' , $directorio = 'backups', $usuario = 'usuario', $pass = 'password', $servidor = 'localhost') {
  11.        $this->usuario = $usuario;
  12.        $this->pass = $pass;
  13.        $this->database = $db;
  14.        $this->servidor = $servidor;
  15.  
  16.        // configurar las rutas a las carpetas
  17.        $this->ruta_carpeta = $this->formatearRuta($directorio);
  18.  
  19.    }
  20.  
  21.    public function getNombre(){
  22.        return $this->nombre_archivo;
  23.    }
  24.  
  25.    public function getRutaCarpeta(){
  26.        return $this->ruta_carpeta;
  27.    }
  28.  
  29.    public function generateBackupSQL($nombre, $table = false){
  30.        // escapamos espacios al nombre del backup
  31.        $nombre = $this->limpiarNombre($nombre);
  32.        $this->nombre_archivo = $nombre.'.sql';
  33.        // ver q sistema operativo tenemos
  34.  
  35.  
  36.        if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN'){
  37.            //Si es Windows
  38.            $this->generateWindows($nombre, $table);
  39.        }else{
  40.            $this->generateLinux($nombre, $table);
  41.        }
  42.        return true;
  43.  
  44.    }
  45.  
  46.    public function generateBackupZip($nombre, $table = false){
  47.        // escapamos espacios al nombre del backup
  48.        $this->generateBackupSQL($nombre, $table);
  49.        $this->comprimirZip(substr($this->nombre_archivo,0, -4));
  50.        unlink($this->ruta_carpeta.$this->nombre_archivo);
  51.        $this->nombre_archivo = substr($this->nombre_archivo,0, -4).'.zip';
  52.  
  53.        return true;        
  54.    }
  55.  
  56.    // genera el backup para Windows
  57.    private function generateWindows($nombre, $table = false){
  58.        // agregamos la consulta y el usuario
  59.        $cmd = $this->ruta_carpeta."mysqldump.exe -u $this->usuario ";
  60.        // si existe contraseña la agregamos
  61.        if($this->pass != '')
  62.            $cmd .= "-p$this->pass ";
  63.        // si existe servidor distinto al local
  64.        if($this->servidor != 'localhost' and $this->servidor != '127.0.0.1' and $this->servidor != '')
  65.            $cmd .= "-h $this->servidor ";        
  66.        // seleccionamos la base de datos
  67.        $cmd .= " $this->database ";
  68.        // si existe una tabla
  69.        if($table)
  70.            $cmd .= " $table ";
  71.        //definimos el nombre para el backup
  72.        $cmd .= " > $this->ruta_carpeta$nombre.sql ";
  73.  
  74.        shell_exec($cmd);
  75.    }
  76.  
  77.    // genera el backup para Linux
  78.    private function generateLinux($nombre, $table = false){
  79.        // agregamos la consulta y el usuario
  80.        $cmd = "mysqldump -u $this->usuario ";
  81.        // si existe contraseña la agregamos
  82.        if($this->pass != '')
  83.            $cmd .= "-p$this->pass ";
  84.        // si existe servidor distinto al local
  85.        if($this->servidor != 'localhost' and $this->servidor != '127.0.0.1' and $this->servidor != '')
  86.            $cmd .= "-h $this->servidor ";        
  87.        // seleccionamos la base de datos
  88.        $cmd .= " $this->database ";
  89.        // si existe una tabla
  90.        if($table)
  91.            $cmd .= " $table ";
  92.        //definimos el nombre para el backup
  93.        $cmd .= " > $this->ruta_carpeta$nombre.sql ";
  94.  
  95.        shell_exec($cmd);
  96.    }
  97.  
  98.    public function restaurarBackup($nombre){
  99.        $this->nombre_archivo = $nombre;
  100.        // verifica si el archivo esta compreso
  101.        switch (substr($nombre, -4)) {
  102.        case '.zip':
  103.            $this->descomprimirZip($nombre);
  104.            $nombre = substr($nombre, 0, -4).'.sql';
  105.            break;
  106.        case '.rar':
  107.            /// descomprimir rar
  108.            break;
  109.        }
  110.  
  111.  
  112.        if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN'){
  113.            //Si es Windows
  114.            $this->restaurarWindows($nombre);
  115.        }else{
  116.            // si es linux u otro SO
  117.            $this->restaurarLinux($nombre);
  118.        }
  119.        return true;
  120.    }
  121.  
  122.    private function restaurarWindows($nombre){
  123.  
  124.        // establese el nombre de usuario
  125.        $cmd = $this->ruta_carpeta."mysql.exe -u $this->usuario ";
  126.        // si existe contraseña la agregamos
  127.        if($this->pass != '')
  128.            $cmd .= "-p$this->pass ";
  129.        // si existe servidor distinto al local
  130.        if($this->servidor != 'localhost' and $this->servidor != '127.0.0.1' and $this->servidor != '')
  131.            $cmd .= "-h $this->servidor ";
  132.        // seleccionamos la base de datos y la ruta del archivo a restaurar
  133.        $cmd .= " $this->database < $this->ruta_carpeta$nombre";
  134.  
  135.        // ejecuta el comando
  136.        shell_exec($cmd);
  137.        // si el archivo q se llamo a restaurar es un archivo compreso elimina el .sql q fue descompreso
  138.        if(substr($this->nombre_archivo, -4) != '.sql')
  139.            unlink($this->ruta_carpeta.$nombre);
  140.  
  141.        return true;
  142.    }
  143.  
  144.    private function restaurarLinux($nombre){
  145.  
  146.        // establese el nombre de usuario
  147.        $cmd = "mysql -u $this->usuario ";
  148.        // si existe contraseña la agregamos
  149.        if($this->pass != '')
  150.            $cmd .= "-p$this->pass ";
  151.        // si existe servidor distinto al local
  152.        if($this->servidor != 'localhost' and $this->servidor != '127.0.0.1' and $this->servidor != '')
  153.            $cmd .= "-h $this->servidor ";
  154.        // seleccionamos la base de datos y la ruta del archivo a restaurar
  155.        $cmd .= " $this->database < $this->ruta_carpeta$nombre";
  156.  
  157.        // ejecuta el comando
  158.        shell_exec($cmd);
  159.        // si el archivo q se llamo a restaurar es un archivo compreso elimina el .sql q fue descompreso
  160.        if(substr($this->nombre_archivo, -4) != '.sql')
  161.            unlink($this->ruta_carpeta.$nombre);
  162.  
  163.        return true;
  164.    }
  165.  
  166.    private function descomprimirZip($nombre){
  167.        $zip = new ZipArchive();
  168.        if($zip->open($this->ruta_carpeta.'/'.$nombre) === true){
  169.            $zip->extractTo($this->ruta_carpeta.'/');
  170.            $zip->close();
  171.            return true;
  172.        }
  173.  
  174.        return false;
  175.    }
  176.  
  177.    private function comprimirZip($nombre){
  178.        $zip = new ZipArchive();
  179.        $filename = $this->ruta_carpeta.'/'.$nombre.'.zip';
  180.  
  181.        if($zip->open($filename, ZipArchive::CREATE) === true){
  182.            $zip->addFile($this->ruta_carpeta."/".$nombre.'.sql', $nombre.'.sql' );
  183.            $zip->close();
  184.            return true;
  185.        }else{
  186.            return false;
  187.        }
  188.    }
  189.  
  190.    public function limpiarNombre($nombre){
  191.        $nombre = trim($nombre);
  192.        return preg_replace("/[^a-z0-9]+/i", "-", $nombre);
  193.    }
  194.  
  195.    private function formatearRuta($ruta){
  196.        /**
  197.          * Reemplaza los separadores de directorio incorrectos por los correctos segun el sistema operativo
  198.          * por lo que es lo mismo poner:
  199.          *
  200.          * carpeta1/carpeta2/carpeta3
  201.          * o
  202.          * carpeta1\carpeta2\carpeta3
  203.          * o
  204.          * carpeta1/carpeta2\carpeta3
  205.          */
  206.  
  207.  
  208.        $ruta = trim($ruta, '\\/');
  209.        $ruta = str_replace('\\',DIRECTORY_SEPARATOR, $ruta);
  210.        $ruta = str_replace('/',DIRECTORY_SEPARATOR, $ruta).DIRECTORY_SEPARATOR;
  211.        //return getcwd().DIRECTORY_SEPARATOR.$ruta;  //retorna ruta absoluta
  212.        return $ruta;
  213.    }
  214. }
  215.  
  216. ?>
  217.  

En tu carpeta de Buckups deberías tener el mysqldump.exe.

Saludos
En línea

Y es que a veces pienso que si no estuviera loco no podría salir adelante.
Lo que no se es capaz de dar, en realidad no se posee, uno es poseído por ello.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Script php Backup MySQL
PHP
EuroHack 9 9,148 Último mensaje 23 Febrero 2012, 11:21 am
por PussyLover
Backup Remote Ftp/Mysql
Software
codersoul 0 1,753 Último mensaje 1 Junio 2010, 16:43 pm
por codersoul
MYSQL Consulta SQL > datetime backup?
Seguridad
Kithai 4 3,078 Último mensaje 15 Noviembre 2016, 16:40 pm
por Kithai
Extrayendo ficheros office de una copia backup - Veeam Backup [AYUDA!]
Seguridad
bulkdark 2 2,575 Último mensaje 24 Septiembre 2021, 21:47 pm
por FFernandez
[AYUDA!] Extrayendo ficheros office de una copia backup - Veeam Backup
Seguridad
bulkdark 3 3,144 Último mensaje 28 Septiembre 2021, 20:54 pm
por EdePC
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines