Muchos de nosotros tenemos o administramos una web de cualquier tipo. Solemos dedicar mucho tiempo en perfeccionar y llenar de contenido nuestra creación.

Sin embargo, a veces sucede algún tipo de desastre o eventualidad y perdemos todo el trabajo de meses e incluso años.

Horror !!, mis datos !!

En estos duros momentos en cuando nos acordamos de las copias de seguridad, pero ¿la hiciste?, ¿cuándo fue la última vez?, ¿qué datos están sin respaldar?, …

Hoy, os voy a enseñar a realizar un pequeño sistema casero para realizar automáticamente copias de seguridad de vuestras webs.

La idea es usar nuestro propio ordenador para almacenar y archivar las copias de la web, sin requerir de caros servicios externos. Lo vamos a hacer bajo Windows, pero empleando las potentes utilidades de Unix.

Lo primero es bajar e instalar las utilidades de Unix para Windows, es muy fácil solo tenéis que ir a http://sourceforge.net/projects/unxutils y descargar el archivo UnxUtils.zip

Una vez que tengamos este fichero en nuestro disco duro lo descomprimimos y veremos que tenemos varios directorios con diversos archivos en su interior. Nos interesa el contenido del directorio wbin que se encuentra bajo el directorio usr.

Utilidades Unix para Windows

 

Ahora tenemos dos opciones dependiendo de lo elgante que queremos hacer la instalación:

a) Método más elegante

Copiamos todos los archivos de este directorio wbin en uno de nuestro disco duro, por ejemplo en c:\unix. Tenemos que tener en este directorio muchos archivos .exe que corresponden a multitud de comandos que podemos encontrar en los sistemas Unix.

Para nuestro pequeño sistema de backup necesitamos solamente tres, nos aseguramos que tenemos al menos gzip.exe, tar.exe y wget.exe en este directorio que acabamos de crear.

Backup solution

El siguiente paso es añadir este directorio c:\unix al path de nuestro sistema operativo, de manera que busque en el cuando escribimos un comando, si por ejemplo escribimos tar en la consola de Windows nos lo debe reconocer sin problema. De nuevo igual que en un sistema Unix.

Podemos añadir este directorio a la variable PATH de varias formas, la más sencilla es ir a las propiedades de Mi PC, desplazarnos hasta la pestaña Opciones avanzadas y hacer clic en el botón “Variables de entorno”

Nos saldrá una ventana como la siguiente:

Cambiar variables de entorno

Modificamos la variable PATH para vuestro usuario, añadiendo un punto y coma al final de la lista de directorios actual y la ruta del directorio que queremos añadir, c:\unix\ en este caso.

Aceptamos los cambios y abrimos una consola del sistema con el comando cmd en el cuadro de Ejecutar (por ejemplo).

Escribimos tar y presionamos Intro, si no reconoce el comando, volvemos al paso anterior y modificamos la variable PATH pero para el sistema, no para el usuario.

Si aún así sigue sin funcionar, prueba a cerrar sesión y volverla a abrir, sino algo estás haciendo mal.

b) Método más rápido

Simplemente copiamos los ejecutables de la carpeta wbin que necesitamos en el directorio Windows\System32 de nuestro sistema, esta carpeta ya está en el path por lo que funcionarán los comandos.

Si lo haces así no copies todas las utilidades de Unix en el directorio  Windows\System32, copia solo las que vayas a usar, demasiados ficheros hay aquí ya como para meter muchos más, te puedes volver loco si después tienes que borar o buscar alguno.

De la forma que sea, ya tenemos nuestras utilidades Unix funcionando, es hora de hacer el programa que hará las copias de seguridad.

Se trata de un pequeño programa escrito en BATCH, básicamente es una ejecución ordenada de otros programas.

archivo .bat

Creamos un directorio donde almacenaremos nuestras copias de seguridad, por ejemplo c:\backup y dentro de el creamos un nuevo archivo de texto, con el nombre backup.bat OJO asegúrate que es .bat y no .txt.bat

Editamos ese fichero con el bloc de notas y escribimos algo como lo siguiente:


@echo OFF
set dia=%DATE%
set dia=%dia:/=_%
wget --mirror ftp://usuario:password@dominio.net -o log.log
tar cf dominio.net_%dia%.tar dominio.net/
gzip dominio.net_%dia%.tar

Obviamente tenemos que poner los datos correctos de nuestro dominio y nuestros datos de acceso por ftp.

wget se bajará todos los ficheros que tengamos en el directorio ftp que le especificamos, para nuestro ejemplo creará un directorio llamado dominio.net con todos los ficheros de nuestra web.

En futuras ejecuciones wget solo descargará los ficheros modificados sobre los que tenga en local, acelerando el tiempo que tarda la copia de seguridad en realizarse.

Una vez que ha bajado todo el contenido, nuestro programa archiva y comprime todos los archivos descargados en un archivo solamente.

Este archivo tendrá la extensión .tar.gz y como parte del nombre llevará la fecha en que se hizo la copia de seguridad.

Nuestro programa nos deja la copia más actual de nuestra web en un directorio por debajo de c:\backup y las copias antiguas las va archivando en ficheros .tar.gz de forma que las tengamos siempre a mano.

Una vez hecho el programa hay que probarlo, simplemente haz doble clic en backup.bat para ejecutarlo.

La primera vez que lo ejecutemos tardará bastante en ejecutar el comando wget, esto depende del tamaño de vuestra web y de la velocidad de conexión a Internet.

Una vez comprobado que funciona correctamente solo tenemos que acudir al programador de tareas de Windows (se encuentra en el panel de control) para crear una nueva tarea con este programa que acabamos de crear.

Programar tarea

La periodicidad de la misma es cosa tuya, pero si haces más de una copia al día este programa es muy simple y sobrescribirá el fichero .tar.gz (ya que se basa en la fecha solamente para el nombre).

Solucionar esto es muy sencillo, solamente tenemos que añadir al nombre del archivo .tar.gz la fecha y la hora a la que se realiza el backup. Lo dejo como ejercicio propuesto a mis lectores.

La ventaja de emplear las utilidades de Unix, aparte de la potencia que nos dan, es que podemos realizar un programa similar en Linux. Las ordenes son las mismas, solamente hay que realizar un script de shell en lugar de un archivo BATCH.

linux linux

En Linux los programas se planifican mediante cron, pero eso amigos, da para otro artículo por lo menos.

La verdad es que me gustaría escribir más en el blog de lo que lo hago, trayendo cosas que considero interesantesy útiles para mis lectores (se que al menos alguno queda, ¿verdad Francisco? ;) ) a ver si es cierto y vuelvo a recuperar mi blog personal.

De todas formas, me podeis encontrar en el proyecto dTapas, un blog colaborativo sobre el mundo de la cocina, las tapas y los pinchos. Actualmente sorteamos camisetas entre todos nuestros lectores. No te quedes sin la tuya !!