Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Realiza backups de tu web automáticamente
#1
Realizar Backups automáticos (Método 1)

Empezando
Accedemos a cron desde nuestro cPanel y entramos por el modo Standard.

De un simple vistazo podemos intuir para qué sirve cada elemento del formulario: una línea donde introducir el comando a ejecutar y una serie de selecciones para indicar la frecuencia de ejecución.

Backup de las bases de datos.
En primer lugar vamos a ocuparnos de las bases de datos y para ello tenemos el siguiente comando:

Código:
mysqldump --opt -user=xxxxx --password=yyyyyy zzzzz | gzip > /ruta/zzzzz_`date +%F`.sql.gz

Analicemos el comando y sus parámetros para saber cómo funciona.
Mysqldump es el comando que realizará el backup.
--opt establece una serie de opciones para permitir un backup seguro y efectivo.
--user xxxxx: donde xxxxx será nuestro nombre de usuario de MySQL.
--password yyyyy: donde yyyyy será la contraseña del usuario de MySQL.
zzzzz será el nombre de la base de datos a respaldar.
gzip comprimirá la salida de mysqldump.
/ruta/zzzzz_`date +%F`.sql.gz será el lugar se almacenará nuestra base de datos respaldada. Conviene indicar un lugar fuera del directorio público para tener nuestros datos a buen recaudo y fuera del alcance de terceras personas. Podemos crear un directorio para tal efecto por ejemplo en /home/usuario/backup.

Presta especial atención al caracter ` (tilde invertida) situada a la derecha de la tecla P de tu teclado (teclado español internacional). date +%F mostrará la fecha actual en formato año-mes-día.

Ahora sólo queda que escribas la línea anterior y sustituyas xxxxx, yyyyy, zzzzz y ruta según sea tu caso.

Respecto a la frecuencia de ejecución de cron hay que ser responsable y no abusar de ello ya que repercute sobre los recursos del servidor. Una copia de seguridad cada semana en general, o cada 3 días si actualizas bastante tu web, es más que suficiente.

Puedes registrar tantas tareas como bases de datos tengas. Pero recuerda que estos backups se irán acumulando en tu directorio /home/usuario/backup por lo que deberás ir borrando los más antiguos o ir descargándolos a tu ordenador.

Backups de los datos
Para realizar una copia de seguridad de tus datos emplearemos el mismo método pero cambiando el comando:

Código:
tar czvf /ruta/backup_`date +%F`.tar.gz /ruta/public_html/*

tar czvf comprimirá los archivos.
/ruta/backup_`date +%F`.tar.gz la ubicación del archivo comprimido. También podríamos almacenarlo en el mismo directorio que en el caso anterior /home/usuario/backup fuera del directorio público.
/ruta/public_html/* los archivos a respaldar.

Al igual que con las bases de datos, la frecuencia de respaldo debe ir acorde a las actualizaciones que realicemos en nuestra web para no sobrecargar nuestros servidores y evitar así que los administradores del hosting puedan llamarnos la atención.

Para realizar estas tareas de una forma equilibrada, sería interesante que especificásemos las frecuencias de forma escalonada. Por ejemplo, la primera tarea a las 0 horas, la segunda tarea a las 1 horas y así sucesivamente para que no se solapen todas las tareas a la vez.

Realizar backups automáticos (Método 2 optimizado)

Consideraciones previas
1º Hay q crear una carpeta temporal. Yo recomiendo hacerlo fuera de la carpeta pública ya q es accesible por los usuarios. Un buen lugar: /home/usuario/backuptmp
2º También es necesario crear la carpeta donde almacenaremos los backups creados.
3º Establecer permisos 0755 a las dos carpetas creadas.
4º Crea un usuario de MySQL específico para realizar las copias. Creálo desde tu cPanel y dale acceso para TODAS las bases de datos q quieras respaldar. Otórgale también permisos para hacer "SELECT" y "LOCK TABLES" (el resto de persmisos no son necesarios aquí y aumentamos así la seguridad)

Copiando datos
Crea un archivo vacío y renómbralo a copia.php y pega dentro:
Código:
<?

// Script realizado por Minenage
// http://bitplanet.eu.org
// _____________________________

    $path_backuptmp = '/home/usuario/backuptmp';    // Ruta del directorio temporal
    $path_www = '/home/usuario/public_html';        // Ruta de nuestro directorio público (www)

    $user_db = 'usuario_backup';                    // Usuario MySQL (debe tener acceso a todas las BBDD)
    $pass_db = 'password';                        // Contraseña del usuario de MySQL
    $db = Array('bbdd1', 'bbdd2', 'bbdd3');    // Las BBDD

    foreach ($db as $v) {
        exec('mysqldump --opt --password='.$pass_db.' --user='.$user_db.' '.$v.' | gzip > '.$path_backuptmp.'/'.$v.'.sql.gz &');
    }

    exec('tar czf '.$path_backuptmp.'/archivos.tar.gz '.$path_www.'/* &');

?>

Adaptamos el valor de las variables a nuestro caso-

Archivando los datos
De igual forma q antes, creamos otro archivo vacío, lo renombramos a archivar.php y pegamos dentro lo siguiente:
Código:
<?

// Script realizado por Minenage
// http://bitplanet.eu.org
// _____________________________

    $path_backuptmp = '/home/usuario/backuptmp';    // Ruta del directorio temporal
    $path_backup = '/home/usuario/backup';        // Ruta del directorio backup

    exec('tar czf '.$path_backup.'/backup_`date +%F`.tar.gz '.$path_backuptmp.'/* &');

    exec('rm '.$path_backuptmp.'/* &');

?>

Este segundo script (el de archivado) es prescindible. Lo único q hace es coger todas las copias de seguridad y archivarlas en un único archivo para q resulte más cómodo manejar los backups. Finalmente se borra el contenido de backuptmp.

Si no interesa guardar todos los backups. Es decir, sólo quieres el último, puedes modificar la línea "exec('tar czf '.$path_backup.'/backup_`date +%F`.tar.gz '.$path_backuptmp.'/* &');" y poner en su lugar: "exec('tar czf '.$path_backup.'/backup.tar.gz '.$path_backuptmp.'/* &');" De esta forma se sobreescribe el último backup.

Preparando el terreno
Sube estos dos archivos a tu espacio web. Te recomiendo q lo subas a /home/usuario/backup donde estará fuera del acceso público y sólo podrá ser ejecutado por tí.

Crea desde tu cPanel los cron jobs necesarios para ejecutar estos dos scripts. En uno coloca:
Código:
php /home/usuario/backup/copia.php
y establece un intervalo de ejecución lógico: hacer backups cada hora no es necesario y sólo aumentamos el consumo de recursos del servidor en perjuicio del resto de usuarios. Sé responsable.

ahora crea el segundo cron job:
Código:
php /home/mrod/backup/archiva.php
Retrasa unos 30 minutos la ejecución de esta tarea respecto al cron job anterior para asegurarnos de q la copia de datos haya acabado cuando empecemos a archivar los resultados.

Relájate
Ya está todo listo para q se realice una copia de todas tus bases de datos, de tus archivos y q todo ellos permanezca bajo un único archivo marcado con la fecha para q puedas manejar distintos backups.

Cada cierto tiempo, haz un poco de limpieza en tu carpeta backup para eliminar los backups más antiguos y liberar así espacio de tu web.

Tutorial Original por: Minenage
[Imagen: bann.png]
WWW
#2
esta muy buena la info ahora la pregunta es puedo usarlo con phpost y de ser asi como lo agrego...?
WWW
#3
es lo mismo que uses phpost, qe otro CMS ya que eso es para trabajar desde Cpanel y lo que hace es bajarse una copia de la db
WWW
#4
Ya me tomo tiempo y lo implemento gracias por la información Guiño
WWW
#5
Es lo que andaba buscando, pero despues lo checo, orita no tengo tiempo
#6
Excelente tutorial, muy bien explicado, muchas gracias Taquion, me sera útil.
WWW
#7
Genial muchas gracias es un buen metodo para no perder tus datos por si acaso tienes algun inconveniente.


Posibles temas similares...
Tema Autor Respuestas Vistas Último mensaje
  Solucionado: [ayuda] Cambio de cabecera automaticamente Sergio09 3 122 06-12-2016, 07:26 AM
Último mensaje: Sergio09
  Codigo Imágenes que cambian automáticamente tucine 8 611 19-05-2015, 03:36 PM
Último mensaje: betiko2424
  Links automaticamente ? videox 6 528 13-04-2013, 11:09 PM
Último mensaje: Tilinga
Información Backups automáticos desde Dropmysite DarkMaster 8 751 17-05-2012, 08:05 PM
Último mensaje: Fer



Usuarios navegando en este tema: 1 invitado(s)