Backup Automático de carpetas y ficheros en formato .ZIP en PHP & Cron

Posted on 27 Diciembre, 2013

Backup en PHP

DESCARGAR Ejemplo

Backup en PHPMuy bien, antes de terminar mi otro articulo que por supuesto empece a escribir y por ningún motivo hay que creer que se me ha olvidado por completo escribir sobre mi gran amiga Katty, pero hasta el momento escribiré este pequeño tutorial de como hacer backup o respaldos automáticos de carpetas y ficheros en un archivo .zip en PHP y terminaré mostrando como agregar el cron, para dejarlo de forma aun más automatizada.

Una de las utilidades del script, es poder crear respaldos fisicos de las carpetas que tengas en tu servidor, ya sea de los ficheros del mismo o de algún otro sistema que tengas por ahí en funcionamiento, lo que hará la función básicamente es tomar la carpeta que tu le digas, recorrer sus ficheros y carpetas y almacenarlas en un archivo .ZIP para manejarlas luego, además de este backup básico que estaremos creando, el script también verifica cuantas de estás copias están creadas, nunca es bueno dejar un archivo que pueda crear tantos elementos como quiera sin control, ya que sin darte cuenta podrías estar llenando tu servidor, en especial si tienes disco duro o cantidad de ficheros limitada, por lo que para este ejemplo practico se podrán crear 5 archivos de backup, y el cron se ejecutará con una frecuencia de 7 días.

Lo primero que haremos será crear nuestro archivo index.php, .htacces y nuestra carpeta backups con su respectivo fichero .htaccess (este punto es muy importante ya que es un respaldo de tus carpetas personales, no quieres dar acceso a ninguno de los ficheros a nadie, por lo que hay que bloquear el acceso de todas estás carpetas de backup, en especial de la carpeta backups.

Creando Index.php

Como se puede ver, lo primero que haremos será crear las diferentes variables que utilizaremos para hacer el backup, donde podemos destacar la variable $files   ya que acá haremos un recorrido en la carpeta para saber si existen ficheros .zip (osea ya hay algún backup o respaldo creado o si es la primera vez que se ejecuta el script.

  •  $creaBU   la usaremos como sémaforo para saber si pasó sin problemas por las diferentes validaciones.
  • $nombre   es el nombre con el que el backup .zip quedará finalmente, en este caso se llama pandamonios_FECHA_DE_CREACION.zip
  • $directorio   es la carpeta donde se guardarán los backup
  • y finalmente $files   es la variable con la que verificaremos si existen los datos y eventualmente usaremos para saber si hay que borrar un fichero y cual.

Contando la cantidad de backup en el servidor

El siguiente paso será contar si es que ya hay backup creados en el servidor y de ser así cuantos hay, cabe recordar que con este ejemplo yo le estoy dando un máximo de 5 ficheros al mismo tiempo.

Como se ve en la línea 14 del ejemplo, si ya se alcanzó el máximo número de ficheros en la carpeta de backup, el mismo script tomará el más antiguo (linea 14) y lo eliminará, para hacer espacio para el respaldo más nuevo.

Para aumentar la cantidad de ficheros permitidos solo tenemos que editar la linea 4.

ZipBU, el trabajo pesado

y para finalizar con la parte del php crearemos la función que recorrerá el fichero para crear el bakup o respaldo.

Básicamente lo que hace esta función es tomar 2 variables, la primera que será la carpeta que queremos que vaya a buscar para crear el respaldo osea la carpeta desde, y la variable $destino que seteamos anteriormente, en esta variable además fijamos la carpeta donde tenemos que ir a dejar el fichero .zip terminado.

Y para terminar ejecutaremos el script al final del mismo para poder crear el backup necesario.

Como se ve, usamos el sémaforo que creamos la variable, $creaBU para saber si pasó por los puntos necesarios y si estos fueron positivos, de ser así, entonces ejecuta la función dando como dijimos en la primera variable, la carpeta que tiene que ir a buscar, y en la segunda el nombre con el que guardará el fichero.

y para finalizar y hacer que se ejecute el script podemos hacerlo de 2 formas, ejecutar directamente el fichero (no mi opción) http://URL_DONDE_SE_ENCUENTRA_EL_SCRIPT.com o crear un cron.

en mi caso para una ejecución de 1 vez cada 7 días, (la configuración del cron, puede variar de servidor en servidor)

0 0 * * 0 /usr/bin/wget http://URL_DONDE_ALOJASTE_LA_CARPETA.com/index.php  

Para Finalizar, los .htaccess

Para ya dar por termiando este pequeño tutorial, crearemos además 2 ficheros .htacces en nuestra carpeta, uno en la raíz junto a index.php y el otro será en la carpeta backups, esto será básicamente para evitar la entrada no autorizada o directa a nuestro script y a nuestros respaldos.

 

DESCARGAR Ejemplo

Sígueme!

Enzopiero Valdivia O.

Desarrollador Web at Pandamonios
Desarrollador web de profesión, Amante de la fotografía y los videojuegos, actualmente trabajando como desarrollador en PHP. trato de escribir de tecnología, fotografía y otros teman que me interesan.
  • PS3: Eddie--MW
  • Origin: Edd1eMW
  • Steam: EddieMW
Sígueme!

  • Trilloyplato Trilloyplato

    Hola buenas,

  • Trilloyplato Trilloyplato

    En el script donde pones:
    if($creaBU): ZipBa(realpath(‘PATH_AL_SEVIDOR’), $destino); endif;

    ;PATH_AL_SEVIDOR que debo de poner no entiendo, si me pones un ejemplo te lo agradeceria

    • es el path de tu servidor si está en “servidor/html_public/proyecto” entonces ese es tu path, es la ubicación en el servidor

      • Trilloyplato Trilloyplato

        Gracias, ya lo consegui