Foros del Web » Programando para Internet » PHP »

Respaldar bases de datos desde el web

Estas en el tema de Respaldar bases de datos desde el web en el foro de PHP en Foros del Web. Hola que tal: Nuevamente pidiendo alguna sugerencia que estoy parado. Tengo un servidor linux corriendo con php, mysql y apache. tengo varias bases de datos ...
  #1 (permalink)  
Antiguo 02/06/2002, 19:32
 
Fecha de Ingreso: enero-2002
Mensajes: 45
Antigüedad: 22 años, 3 meses
Puntos: 0
Respaldar bases de datos desde el web

Hola que tal:

Nuevamente pidiendo alguna sugerencia que estoy parado.

Tengo un servidor linux corriendo con php, mysql y apache. tengo varias bases de datos en este servidor que dia con dia van en aumento.

Para monitorear mis bases de datos de forma facil y rapida eh usado el phpmyadmin.

Como estas bases de datos van en aumento y se me esta complicando el hacer respaldo de las mismas, dedici hacer un pequeño programita que me respalde las bases de datos via web con php, como lo hace el phpmyadmin, pero quiero que mi programa unicamente se encargue de respaldar unicamente, no me interza nada mas.

Y bueno, pude generar el archivo con el mysqldump, pero no eh logrado conocer como poder hacer para que me envie el archivo para yo descargarlo en mi pc como lo hace el phpmyadmin(si lo han usuado, saben que se puede seleccionar la base de datos y cuando se presiona el boton Go, aparece la pantalla para descargar el archivo generado).

Al pricipio pense que era muy sencillo pero ya llevo varios dias y no logro dar con el clavo.

Si alguin tiene una sugerencia o por alli a visto documentacion al respecto, se los
agradecere mucho.

Nota:Lo de menos es hacerlo con el phpmyadmin(a algun otro programa), pero se me ha metido una astillita y por eso me interza hacerlo yo mismo.

De ante mano gracias
  #2 (permalink)  
Antiguo 02/06/2002, 19:50
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Re: Respaldar bases de datos desde el web

Ya que tienes acceso a tu servidor Linux .. mejor seria que te creases un Cron de sistema y que el se encargarse de duplicar las BD de tu sistema para hacer el backup (copias de seguridad) ..

No me se muy bien la sintaxis del comando mysql . pero seria el cron algo asi como mysql dump > .. ficheronuevo.sql .. e indicarle la ruta donde lo quieras guardar. Asi mismo .. el cron que se ejecute a intervalos de tiempo predefinido por ti .. y asi te olvidas hasta de iniciar tu mismo el proceso de backup de tus BD ..

Un saludo,
  #3 (permalink)  
Antiguo 02/06/2002, 19:55
Avatar de gomo  
Fecha de Ingreso: mayo-2002
Ubicación: [email protected]
Mensajes: 906
Antigüedad: 21 años, 11 meses
Puntos: 0
Re: Respaldar bases de datos desde el web

A ver, dejame ver si te entiendo: ya conseguiste generar todo el listado de querys que con ejecutarlas recrearian toda la DB?? Eso es lo más aburrido, cual es el problema? No sabes como hacer para que los archivos .txt los puedas bajar? Explicate mejor, pero seguramente es cuestion de enviar headers para que s einicie el download... Explica mejor que es lo que te pasa a ver si te podemos ayudar, saludos

<div align="center"><img src="http://cablemodem.fibertel.com.ar/sainztrapaga/images/firma.jpg" width="435" height="70" border="0">
</div>
  #4 (permalink)  
Antiguo 02/06/2002, 20:15
 
Fecha de Ingreso: enero-2002
Mensajes: 45
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: Respaldar bases de datos desde el web

Hola que tal:

Lo del cron ya lo tengo planeado, pero primero queria hacerlo via web, y como les decia, se me metio la espinita y no quisiera cambiar de idea hasta no conseguir lo que quiero.

Y si efectivamente tiene que ver con las cabezeras, y me estoy dando cuenta que no entiendo bien como funcionan las cabezeras.

Mira, yo ya genero el archivo y lo guardo en mi directorio(este archivo tiene todas las sentencias sql necesarias para generar mi base de datos.).

Lo que yo quiero es entrar a mi panel de administracion y que con solo presionar un boton me mande la ventana que me pide en que parte de mi disco duro quiero guardar el archivo generado por el mysqldump.

Como debo manejar las cabezeras???

De ante manos gracias
  #5 (permalink)  
Antiguo 02/06/2002, 21:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Re: Respaldar bases de datos desde el web

Basicamente las cabeceras son:

$filename = &quot;fichero.sql&quot;;
header(&quot;Pragma: no-cache&quot;);
header(&quot;Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0&quot;);
header(&quot;Expires: 0&quot;);
header(&quot;Content-Transfer-Encoding: binary&quot;);
header(&quot;Content-type: application/force-download&quot;);
header(&quot;Content-Disposition: attachment; filename=$filename&quot;);

y a partir de aqui haces tu consulta .. para generar una variable (concatenando los registros) ...
(es un ejemplo .. usa tus metodos de tus consultas).

$timestamp = time();
$fecha = date (&quot;d/m/Y&quot;,$timestamp);
$hora=date (&quot;H:i:s&quot;,$timestamp);

$datos =&quot;#---------------------------------------------&quot;.$crlf;
$datos .=&quot;# Copia Seguridad Datos &quot;.$crlf;
$datos .=&quot;# fecha: $fecha a las $hora horas.&quot;.$crlf;
$datos .=&quot;#&quot;.$crlf;
$datos .=&quot;# Base de datos: $db_nombre&quot;.$crlf;
$datos .=&quot;# Tabla: $tabla_listin&quot;.$crlf;
$datos .=&quot;# Total registros: $total_registros&quot;.$crlf;
$datos .=&quot;#---------------------------------------------&quot;.$crlf.$crlf;

while($resultados = mysql_fetch_array($consulta)) {
$datos .=&quot;INSERT INTO tabla VALUES(&quot;;
for ($i=0; $i&lt;=10; $i++){
$datos .=&quot;'$resultados[$i]',&quot;;
}
$datos .=&quot;'$resultados[11]'&quot;;
$datos .=&quot;);&quot;.$crlf;
}

$datos .=$crlf;
$datos .=&quot;# Fin datos, Descarga completa correctamente.&quot;;


#mandamos todo al navegador
echo $datos;

El $resultados[11] corresponderia al campo nº ultimo de tu tabla (para darle el cierre a la instruccion INSERT) ..

De esta manera generamos un &quot;SQL&quot; listo para insertar si fuera necesario en una perdida de datos de la BD .. o reestablecer datos antiguos.

Un saludo,
  #6 (permalink)  
Antiguo 02/06/2002, 21:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Re: Respaldar bases de datos desde el web

Me deje el $crlf .. (salto de linea):

if (!defined('USR_OS')) {
if (!empty($HTTP_SERVER_VARS['HTTP_USER_AGENT'])) {
$HTTP_USER_AGENT = $HTTP_SERVER_VARS['HTTP_USER_AGENT'];
}
// 1. Platform
if (strstr($HTTP_USER_AGENT, 'Win')) {
define('USR_OS', 'Win');
} else if (strstr($HTTP_USER_AGENT, 'Mac')) {
define('USR_OS', 'Mac');
} else if (strstr($HTTP_USER_AGENT, 'Linux')) {
define('USR_OS', 'Linux');
} else if (strstr($HTTP_USER_AGENT, 'Unix')) {
define('USR_OS', 'Unix');
} else {
define('USR_OS', 'Other');
}
// 2. browser and version
if (ereg('MSIE ([0-9].[0-9]{1,2})', $HTTP_USER_AGENT, $log_version)) {
define('USR_BROWSER_VER', $log_version[1]);
define('USR_BROWSER_AGENT', 'IE');
} else if (ereg('Opera(/| )([0-9].[0-9]{1,2})', $HTTP_USER_AGENT, $log_version)) {
define('USR_BROWSER_VER', $log_version[2]);
define('USR_BROWSER_AGENT', 'OPERA');
} else if (ereg('Mozilla/([0-9].[0-9]{1,2})', $HTTP_USER_AGENT, $log_version)) {
define('USR_BROWSER_VER', $log_version[1]);
define('USR_BROWSER_AGENT', 'MOZILLA');
} else if (ereg('Konqueror/([0-9].[0-9]{1,2})', $HTTP_USER_AGENT, $log_version)) {
define('USR_BROWSER_VER', $log_version[1]);
define('USR_BROWSER_AGENT', 'KONQUEROR');
} else {
define('USR_BROWSER_VER', 0);
define('USR_BROWSER_AGENT', 'OTHER');
}
}

# Determina el salto de linea para varias plataformas de SO.
function which_crlf()
{
$the_crlf = &quot;\n&quot;;

// Win case
if (USR_OS == 'Win') {
$the_crlf = &quot;\r\n&quot;;
}
// Mac case
else if (USR_OS == 'Mac') {
$the_crlf = &quot;\r&quot;;
}
// Others
else {
$the_crlf = &quot;\n&quot;;
}

return $the_crlf;
}

$crlf = which_crlf();

Un saludo,

  #7 (permalink)  
Antiguo 03/06/2002, 18:21
 
Fecha de Ingreso: enero-2002
Mensajes: 45
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: Respaldar bases de datos desde el web

Hola que tal:

Gracias a todos por echarme la mano y bueno ya eh resolvido el problema gracias a ustedes.

y pongo aqui el codigo muy simple por cierto por si a alguien le intereza:

&lt;?php
$filename=&quot;respaldo.sql&quot;;

header(&quot;Content-type: application/force-download&quot;);
header(&quot;Content-Disposition: attachment; filename=$filename&quot;);


$usuario=&quot;usuario_angel&quot;;
$passwd=&quot;passwd_angel&quot;;
$bd=&quot;nombre_de_la_base_de_datos&quot;;

$executa = &quot;/usr/local/mysql/bin/mysqldump -u$usuario -p$passwd $bd&quot;;
system($executa, $resultado);

if ($resultado)
{
echo &quot;&lt;H1&gt;Error ejecutando comando: $executa&lt;/H1&gt;\n&quot;;
}

?&gt;

Lo que hace, es ejecutar el mysqldump y el resultado se puede guardar en tu disco local, ya que aparece la ventana para que tu lo guardes donde quieras, sin mostrarlo en el navegador.

bye
  #8 (permalink)  
Antiguo 04/06/2002, 13:32
 
Fecha de Ingreso: junio-2001
Ubicación: Rosario
Mensajes: 1.434
Antigüedad: 22 años, 10 meses
Puntos: 2
Re: Respaldar bases de datos desde el web

Que tal gusa

Che prove el codigo y me da el siguiente error

?php $filename=&quot;respaldo.sql&quot;; header(&quot;Content-type: application/force-download&quot;); header(&quot;Content-Disposition: attachment; filename=$filename&quot;); $usuario=&quot;------&quot;; $passwd=&quot;------&quot;; $bd=&quot;-------&quot;; $executa = &quot;/usr/local/mysql/bin/mysqldump -u$usuario -p$passwd $bd&quot;; system($executa, $resultado); if ($resultado) { echo &quot;
Error ejecutando comando: $executa
\n&quot;; } ?&gt;

<p align="center"><a href="http://web-onear.org"><img border="0" src="http://web-onear.org/scripts/temporales/wouf.gif" width="291" height="96"></a></p>
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:14.