Copias de seguridad remotas por FTP Print
SOFTWARE - General
Saturday, 04 October 2008 15:54
There are no translations available.

La finalidad de este artículo es concienciar a los usuarios de la importancia de realizar copias de seguridad periódicas...

Introducción

Aunque los usuarios cada vez se toman más en serio la realización de copias de seguridad, todavía mucha gente sigue perdiendo archivos y horas de trabajo por no realizar copias de forma periódica tal y como se recomienda.

A pesar de haber avanzado mucho el hardware de almacenamiento en estos últimos años con la aparición de los discos USB externos y las memorias USB, los usuarios menos precavidos siguen sin realizar copias de seguridad o las hacen muy pocas veces al año.

Para intentar convencer a aquellos usuarios arriesgados de la importancia de realizar copias de seguridad periódicas, vamos a enumerar las múltiples circunstancias que pueden ocasionarnos una pérdida de datos:

  • Sistema operativo que no arranca y no sabemos extraer los datos (ocurre muy a menudo)

  • Borrado accidental de los datos, tanto desde el PC como desde la red (ocurre frecuentemente)

  • Disco duro que se estropea (ocurre a veces)

  • El PC se nos cae al suelo y se estropea (ocurre a veces)

  • Virus que nos borra todo (ocurre a veces)

  • Nos roban el PC (ocurre raras veces)

  • Incendio/inundación/catástrofe en la oficina (ocurre raras veces)


A veces los discos duros se estropean

La finalidad de este artículo es concienciar a los usuarios de la importancia de realizar copias de seguridad periódicas y proponer un sistema sencillo de realización automática de copias de seguridad en servidores remotos por FTP.

Organización de la información

Antes de continuar, debemos dejar claro cual es la información importante que debemos salvaguardar, así como la frecuencia de realización de las copias de seguridad.

La información más importante de un usuario es la información que genera el propio usuario, es decir, sus documentos. Estos suelen ser documentos, hojas de cálculo, bases de datos, presentaciones o simples archivos de texto. Lo normal es que el usuario guarde sus documentos en la carpeta Mis Documentos

La carpeta Mis Documentos puede llegar a contener miles de documentos, provocando que la copia de seguridad ocupe cientos de MB, o incluso algún GB, lo que convierte la realización de la copia de seguridad en una tarea muy lenta. Para poder realizar copias frecuentes, debemos evitar esa lentitud a toda costa. Para ello distinguiremos entre dos tipos de información:información de alta importancia e información de baja importancia.

  • Información de alta importancia: Serán los archivos con los que estamos trabajando habitualmente y los archivos que tenemos actualmente en desarrollo. Por ejemplo, podemos tener una base de datos con nuestros contactos, o una hoja de cálculo con información que manejamos diariamente. También podemos estar desarrollando una presentación para impartir un curso, o podemos estar preparando un informe en un documento. Se recomienda realizar copias de seguridad diarias de dicha información.

  • Información de baja importancia: Serán los archivos que ya no modificamos o que lo hacemos raramente. Por ejemplo, si ya hemos terminado la presentación y ya hemos impartido el curso o ya hemos realizado y presentado el informe. Estos archivos apenas cambiarán con el tiempo, pero nos interesa mantenerlos por si tenemos que consultarlos o realizar nuevos desarrollos a partir de ellos. Se recomienda realizar copias de seguridad mensuales de dicha información.


Frecuencia de las copias de seguridad

Para poder almacenar estos dos tipos de información, necesitamos dos carpetas

  • Información de alta importancia: Como son archivos con los que estamos trabajando constantemente, lo más razonable es que creemos una carpeta llamada DocumentosImportantes dentro de la carpeta Mis Documentos. Según vayamos terminando los documentos en desarrollo, deberemos quitarles de aquí ya que pasarían a ser de baja importancia. Haremos copia de seguridad diaria de dicha carpeta, sobre un servidor FTP. Para ello, el archivo de comprimido de la copia de seguridad de esta carpeta, no debe sobrepasar los 10 MB de tamaño ya que de lo contrario, podría tardar mucho tiempo en trasferirse la copia al servidor FTP.

  • Información de baja importancia: Esta información la almacenaremos en diferentes carpetas dentro de la carpeta Mis Documentos. En ellas iremos almacenando los archivos de baja importancia. Realizaremos copia mensual de la carpeta Mis Documentos sobre un disco duro USB extraíble. El archivo de comprimido con la copia de seguridad de esta carpeta, podría incluso superar 1 GB de tamaño.


Carpetas donde almacenaremos los datos

Si queremos guardar otros archivos no generados por nosotros (Ej: archivos que hayamos descargado de Internet o que nos hayan enviado por correo electrónico, etc...) pero que consideramos importantes, podemos almacenarlos en alguna carpeta dentro de 'Mis Documentos'

Ahora solo falta automatizar el proceso de generar la copia de seguridad y salvaguardarla. Para ello crearemos un script (archivo con ordenes de comandos) que comprima las carpetas en un archivo ZIP y le envíe por FTP o le copie al disco externo USB según sea el caso.


Envío de la copia por FTP

Realización de la copia en sistema Microsoft Windows

Compresión de los datos

Para poder realizar un script que comprima archivos zip desde linea de comandos, necesitamos instalar el comando zip para Windows. Para ello, lo mejor es que instalemos las "GNU Utilities for Win 32". Desde este enlace se pueden descargar. Si descomprimimos todos los archivos del paquete zip dentro de la carpeta C:WINDOWS, podremos ejecutar el comando zip y muchos otros comandos típicos de Unix (wget, wput, wc, tar, gzip, du, grep, bzip2, unrar, md5sum, diff, sort, etc...) desde una ventana de comandos de Windows, sin necesidad de indicar la ruta completa del ejecutable, ya que la carpeta C:WINDOWS se encuentra dentro de la ruta (PATH) de búsqueda de comandos.

Una vez instalado el comando zip, crearemos el script para comprimir las carpetas. La carpeta DocumentosImportantes se encuentra dentro de la carpeta Mis Documentos que a su vez se encuentra dentro de la carpeta home del usuario: C:Documents and SettingsNombre-Usuario

Script para la creación de una copia de seguridad comprimida

REM Borramos la copia de seguridad anterior
del DocumentosImportantes.zip
REM Creamos la nueva copia de seguridad comprimida
REM La opción -r es para que comprima también las subcarpetas.
zip -r DocumentosImportantes.zip

Así habremos creado dentro de la carpeta DocumentosImportantes, un archivo llamado DocumentosImportantes.zip que contiene comprimidos todos los archivos de la carpeta.

Envío de la copia de seguridad al servidor FTP

Para enviar la copia de seguridad a un servidor FTP, utilizaremos el cliente de FTP de comandos de Windows. Lo primero que necesitamos es disponer de una cuenta en un servidor FTP. Para poder hacer uso del servidor FTP, necesitamos la siguientes datos:

Datos para conectar con el servidor FTP

Nombre del servidor. Por ejemplo: enebro.pntic.mec.es
Nombre de usuario (login). Por ejemplo: arug0000
Contraseña. Por ejemplo: gomez22

Si quisiéramos subir el archivo DocumentosImportantes.zip manualmente, hacia el servidor FTP, deberíamos abrir una ventana de comandos y ejecutar los siguientes comandos:

ftp enebro.pntic.mec.es // Iniciamos conexión con el servidor
username: arug0000   // El servidor nos pregunta el nombre de usuario
password:  // Escribimos la contraseña (no se muestra)
bin  // Indicamos que vamos a trabajar con archivos binarios
put DocumentosImportantes.zip DocumentosImportantes.zip // Subimos el archivo
quit // Cerramos la sesión

 


Envío de la copia por FTP

Para subir el archivo al servidor de FTP de forma automática, al ejecutar el comando ftp, emplearemos la opción -s. Así, el cliente FTP tomará de un archivo los datos que se introducen por teclado cuando se efectúa manualmente. Crearemos el siguiente archivo:

Archivo: comandos-ftp.txt

arug0000
gomez22
bin
put DocumentosImportantes.zip
quit

Después, solo tendremos que ejecutar el siguiente comando:

ftp -s:comandos-ftp.txt enebro.pntic.mec.es

Así, el cliente de FTP cogerá del archivo comandos-ftp.txt los datos de nombre de usuario y contraseña, así como los comandos que debe procesar. Con esto habremos conseguido realizar el envío de la copia de seguridad, sin tener que introducir ningún dato por teclado.

TRUCO: Otra forma sencilla de enviar el archivo por ftp en un solo comando sin necesidad de crear un archivo comandos-ftp.txt, es utilizando el comando wput indicando el nombre de usuario seguido de dos puntos, seguido de una arroba y seguido del nombre del servidor. Por ejemplo:

//Subir archivo con wput
wput DocumentosImportantes.zip ftp://arug0000:gomez22@enebro.pntic.mec.es

De igual forma, si tuviéramos que descargarnos una copia del servidor ftp, podemos hacerlo en un solo comando con wget. El ejemplo de utilización sería:

//Descargar archivo con wget
wget ftp://arug0000:gomez22@enebro.pntic.mec.es/DocumentosImportantes.zip

 

Mantener histórico de copias de seguridad

Si quisiéramos mantener varias copias en el servidor, deberemos ir rotando los archivos cambiándoles de nombre. Por ejemplo, si quisiéramos mantener las últimas cinco copias, el archivo comandos-ftp.txt sería así:

Archivo: comandos-ftp.txt que mantiene cinco últimas copias

arug0000
gomez22
delete DocumentosImportantes5.zip
rename DocumentosImportantes4.zip DocumentosImportantes5.zip
rename DocumentosImportantes3.zip DocumentosImportantes4.zip
rename DocumentosImportantes2.zip DocumentosImportantes3.zip
rename DocumentosImportantes.zip DocumentosImportantes2.zip
bin
put DocumentosImportantes.zip
quit

 

Automatizar la tarea

Para automatizar la tarea de compresión y envío de los datos al servidor de FTP, crearemos un script que realice todo de forma automática y posteriormente crearemos una tarea programada que ejecute nuestro script todos los días, para que no tengamos que realizar ninguna acción y la copia se realice por sí sola.

Juntando los dos scripts anteriores, tendremos el script completo:

Archivo: DocumentosImportantes.bat

REM Este script comprimirá los datos al archivo DocumentosImportantes.zip
REM Después enviará el archivo a un servidor FTP
REM
REM Colocar este script dentro de la carpeta DocumentosImportantes
REM Borramos el archivo anterior
del DocumentosImportantes.zip
REM Creamos la nueva copia de seguridad comprimida
REM La opción -r es para que comprima también las subcarpetas
zip -r DocumentosImportantes.zip *
REM Subimos el archivo al servidor FTP
REM La opción -s es para que lea los comandos desde un archivo
ftp -s:comandos-ftp.txt enebro.pntic.mec.es

Para que este script funcione correctamente, deberemos crear el archivo comandos-ftp.txt dentro también de la carpeta DocumentosImportantes con el nombre de usuario y la contraseña del servidor FTP de nuestra cuenta. También debemos poner el nombre del servidor FTP correctamente en la última línea del script, ya que en el ejemplo se ha puesto enebro.pntic.mec.es.

Ahora solo tenemos que crear una Tarea Programada que lance nuestro script DocumentosImportantes.bat todos los días a una hora concreta. Como yo suelo tomar café todos los días de 12:00 a 12:20, ejecuto el script a las 12:05.

Para crear la tareas programada, debemos ir a Inicio > Panel de Control > Tareas Programadas > Agregar tarea programada. Aparecerá el asistente de tareas programadas que nos preguntará qué aplicación debemos ejecutar. Evidentemente nuestro script no aparece en la lista, así que debemos hacer clic en el botón Examinar y seleccionarlo:


Selección de la tarea programada

Luego deberemos asignar un nombre a la tarea, que puede ser el mismo que el nombre del script. También debemos especificar la periodicidad con la que queremos ejecutar la tarea. En nuestro caso, diariamente:


Periodicidad de la tarea programada

Acto seguido tendremos que especificar la hora a la que queremos que se ejecute la tarea. En nuestro caso, a las 12:05 horas.


Hora de ejecución de la tarea programada

Finalmente debemos proporcionar el nombre y contraseña de un usuario del equipo, para poder ejecutar la tarea.


Usuario con el que se ejecuta la tarea programada

Ya tendremos creada nuestra tarea, que se ejecutará de forma automática todos los días a las 12:05 horas. Para probar que funciona, podemos esperar hasta las 12:05 o bien hacer clic con el derecho y Ejecutar la tarea.


Tareas programadas

Para la realización de la copia mensual de la carpeta Mis Documentos crearemos un script que comprima la carpeta en un archivo y copie dicho archivo al disco USB:

Archivo: MisDocumentos.bat

REM Este script comprimirá los datos al archivo MisDocumentos.zip
REM Después copiará el archivo a un disco duro USB
REM
REM Colocar este script dentro de la carpeta Mis Documentos.
REM Borramos el archivo anterior
del MisDocumentos.zip
REM Creamos la nueva copia de seguridad comprimida
REM La opción -r es para que comprima también las subcarpetas
zip -r MisDocumentos.zip *
REM Copiamos el archivo al disco USB
REM Suponemos que la unidad USB es la F:. Si fuera otra, cambiar.
REM Opción /Y para sobrescribir sin preguntar
copy /Y MisDocumentos.zip F:

Antes de ejecutar este script, hay que conectar el disco USB al PC, por eso, es mejor ejecutar este script manualmente.

Realización de la copia en Linux

Compresión de los datos

La mayoría de distribuciones linux disponen del comando zip para comprimir desde la línea de comandos. Si no fuera nuestro caso, deberíamos instalarlo siguiendo las instrucciones de instalación de nuestra distribución. Por ejemplo, en el caso de distribuciones basadas en Debian como Ubuntu, Linex, etc... deberemos ejecutar:

//Instalación del comando zip en Debian
# apt-get install zip

Una vez instalado el comando zip, crearemos el script para comprimir las carpetas. La carpeta DocumentosImportantes se encuentra dentro de la carpeta home del usuario.

//Creación de una copia de seguridad comprimida
# Borramos la copia de seguridad anterior
rm -f DocumentosImportantes.zip
# Creamos la nueva copia de seguridad comprimida
# La opción -r es para que comprima también las subcarpetas.
zip -r DocumentosImportantes.zip

Este script creará dentro de la carpeta DocumentosImportantes, un archivo llamado DocumentosImportantes.zip que contiene comprimidos todos los archivos de la carpeta.

Envío de la copia de seguridad al servidor FTP

Para enviar la copia de seguridad a un servidor FTP, utilizaremos el cliente de FTP de comandos de Linux. Lo primero que necesitamos es disponer de una cuenta en un servidor FTP. Para poder hacer uso del servidor FTP, necesitamos la siguientes datos:

//Datos para conectar con el servidor FTP
Nombre del servidor. Por ejemplo: enebro.pntic.mec.es
Nombre de usuario (login). Por ejemplo: arug0000
Contraseña. Por ejemplo: gomez2

Si quisiéramos subir el archivo DocumentosImportantes.zip manualmente, hacia el servidor FTP, deberíamos abrir una ventana de comandos y ejecutar los siguientes comandos:

// Iniciamos conexión con el servidor
// El servidor nos pregunta el nombre de usuario
// Escribimos la contraseña (no se muestra)
// Vamos a transferir archivos binarios
// Subimos el archivo DocumentosImportantes.zip
// Cerramos la sesión

 


Envío de la copia por FTP

Para poder subir el archivo al servidor de FTP de forma automática, debemos crear dentro de nuestra carpeta home, un archivo llamado .netrc. Dicho archivo contendrá unos valores por defecto de nombre de usuario, contraseña y una macro inicial donde escribiremos los comandos que queremos ejecutar automáticamente. Así, cada vez que el cliente FTP conecte con nuestro servidor, se autentificará y ejecutará los comandos de la macro inicial. Para nuestro ejemplo, crearemos el siguiente archivo:

Archivo ~/.netrc

machine enebro.pntic.mec.es
login arug0000
password gomez22
macdef init
bin
put DocumentosImportantes.zip
quit

Después, solo tendremos que ejecutar el siguiente comando:

ftp enebro.pntic.mec.es

El cliente de FTP analizará el archivo .netrc y al encontrar unas especificaciones para la máquina enebro.pntic.mec.es, se autentificará y procesará los comandos de la macro inicial (init). Con esto habremos conseguido realizar el envío de la copia de seguridad, sin tener que introducir ningún dato por teclado.

TRUCO: Otra forma sencilla de enviar el archivo por ftp en un solo comando sin necesidad de crear el archivo .netrc, es utilizando el comando wput indicando el nombre de usuario seguido de dos puntos, seguido de una arroba y seguido del nombre del servidor. Si wput no estuviera instalado, se puede instalar con apt-get install wput. Un ejemplo de utilización de wput es:

//Subir archivo con wput
wput DocumentosImportantes.zip ftp://arug0000:gomez22@enebro.pntic.mec.es

De igual forma, si tuviéramos que descargarnos una copia del servidor ftp, podemos hacerlo en un solo comando con wget. El ejemplo de utilización sería:

//Descargar archivo con wget
wget ftp://arug0000:gomez22@enebro.pntic.mec.es/DocumentosImportantes.zip

 

Mantener histórico de copias de seguridad

Si quisiéramos mantener varias copias en el servidor, deberemos ir rotando los archivos cambiándoles de nombre. Por ejemplo, si quisiéramos mantener las últimas cinco copias, el archivo .netrc sería así:

Archivo ~/.netrc que mantiene cinco últimas copias

machine enebro.pntic.mec.es
login arug0000
password gomez22
macdef init
delete DocumentosImportantes5.zip
rename DocumentosImportantes4.zip DocumentosImportantes5.zip
rename DocumentosImportantes3.zip DocumentosImportantes4.zip
rename DocumentosImportantes2.zip DocumentosImportantes3.zip
rename DocumentosImportantes.zip DocumentosImportantes2.zip
bin
put DocumentosImportantes.zip
quit

 

Automatizar la tarea

Para automatizar la tarea de compresión y envío de los datos al servidor de FTP, crearemos un script que realice todo de forma automática y posteriormente crearemos una tarea programada que ejecute nuestro script todos los días, para que no tengamos que realizar ninguna acción y la copia se realice por sí sola.

Juntando los dos scripts anteriores, tendremos el script completo:

Archivo: DocumentosImportantes.sh

# Este script comprimirá los datos al archivo DocumentosImportantes.zip
# Después enviará el archivo a un servidor FTP
# Colocar este script dentro de la carpeta DocumentosImportantes
# Asignar permisos 755 para ejecución
# Borramos el archivo anterior
rm -f DocumentosImportantes.zip
# Creamos la nueva copia de seguridad comprimida
# La opción -r es para que comprima también las subcarpetas
zip -r DocumentosImportantes.zip
# Subimos el archivo al servidor FTP
ftp enebro.pntic.mec.es

 

Para que este script funcione correctamente, deberemos crear el archivo .netrc dentro de nuestro home. En dicho archivo deberemos configurar correctamente el nombre del servidor, el nombre de usuario y la contraseña del servidor FTP de nuestra cuenta.

Ahora solo tenemos que crear una Tarea Programada que lance nuestro script DocumentosImportantes.sh todos los días a una hora concreta. Como yo suelo tomar café todos los días de 12:00 a 12:20, ejecuto el script a las 12:05.

Usaremos el comando crontab -e y añadiremos la siguiente línea:

Ejecutar crontab -e y añadir:

05 12 * * * ~/DocumentosImportantes/DocumentosImportantes.sh

De esta manera, todos los días a las 12:05 se ejecutará nuestro script que comprimirá y enviará mis documentos importantes al servidor FTP de forma totalmente trasparente al usuario.