Primeramente vamos a introducirnos a lo que es..

rsync es una aplicación libre para sistemas de tipo Unix y microsoft window$ que ofrece transmisión eficiente de datos incrementales, que opera también con datos comprimidos y cifrados. Mediante una técnica de delta encoding, permite sincronizar archivos y directorios entre dos máquinas de una red o entre dos ubicaciones en una misma máquina, minimizando el volumen de datos transferidos. Una característica importante de rsync no encontrada en la mayoría de programas o protocolos es que la copia toma lugar con sólo una transmisión en cada dirección. rsync puede copiar o mostrar directorios contenidos y copia de archivos, opcionalmente usando compresión y recursión.

Actuando como un daemon de servidor, rsync escucha por defecto el puerto TCP 873, sirviendo archivos en el protocolo nativo rsync o via un terminal remoto como RSH o SSH. En el último caso, el ejecutable del cliente rsync debe ser instalado en el host local y remoto.

rsync se distribuye bajo la licencia GNU General Public License.

Cron En el sistema operativo Unix, cron es un administrador regular de procesos en segundo plano (demonio) que ejecuta procesos o guiones a intervalos regulares (por ejemplo, cada minuto, día, semana o mes). Los procesos que deben ejecutarse y la hora en la que deben hacerlo se especifican en el fichero crontab. El nombre cron viene del griego chronos que significa "tiempo".

Cron se podría definir como el "equivalente" a Tareas Programadas de window$.

Por que usar rsync

Simplemente por que es un Software especifico para la realización de copias, funciona de manera a acelerar las transferencias al copiar las diferencias entre 2 archivos, en ves de copiar el archivo entero todas las veces.

Eso mismo. rsync consigue identificar que archivos fueron alterados y el administrador puede optar por copiar solamente los archivos nuevos o modificados no necesariamente todos los archivos, lo que tomaria el proceso de backup demorado de manera innecesaria.

Ese recurso puede presentar una gran ventaja, principalmente para backups diários de grande cantidad de archivos.

Otro gran beneficio es que rsync guarda las informaciones sobre permisos y propiedades de los archivos y directorios, inclusive de links simbólicos.

Instalando el rsync

El primer paso es instalar el rsync, si no lo tiene. Si utilizamos Debian, nos logueamos como root y escribimos:

# apt-get install rsync

Si utilizas ubunti escribe:

$ sudo apt-get install rsync

Solamente para confirmar si el rsync que instalamos está funcionando normalmente, escribimos en la linea de comando:

$ rsync

En el caso de que aparezcan informaciones de la ayuda del rsyn es por que fue instalado correctamente.

Configurando el archivo backup

En el archivo de abajo será utilizado el siguiente parametro con el rsyn para que realize la copia: -Cravzp.

De esta forma, el rsync está siendo accionado para:

-C: auto-ignorar archivos identicos;
-r: copiar de forma recursiva, osea todos los directorios y subdirectorios en el camino especificado;
-a: indica que estaran siendo copiados archivos;
-v: modo detallado, más información de copia;
-z: comprime los archivos durante la copia;
-p: indicador de progreso de copia.

#!/bin/bash

INICIO=`date +%d/%m/%Y-%H:%M:%S`
LOG=/var/log/`date +%Y-%m-%d`_nombree-del-archivo-de-log.txt

echo " " >> $LOG
echo " " >> $LOG
echo "|-----------------------------------------------" >> $LOG
echo " Sincronización iniciada en $INICIO" >> $LOG


sudo rsync -Cravzp /carpeta-de-origen/ /carpeta-de-destino/ >> $LOG
FINAL=`date +%d/%m/%Y-%H%:M:%S`


echo " Sincronización Finalizada en $FINAL" >> $LOG
echo "|-----------------------------------------------" >> $LOG
echo " " >> $LOG
echo " " >> $LOG

Explicando el archivo de backup

En la primera linea hay un aviso del interpretador de comandos que debe ser utilizado el bash:


#!/bin/bash

Almacena el momento de inicio en la variable INICIO, en formato dd/mm/yyyy-hh:mm:ss:

INICIO=`date +%d/%m/%Y-%H:%M:%S`

Almacena en la variable LOG que archivo debe ser grabado en el registro de backup, en el formato yyyy-mm-dd_nombre-del-archivo.txt:

LOG=/var/log/`date +%Y-%m-%d`_nombre-del-archivo-de-log.txt

Manteniendo ese archivo, puede ser muy util para que pueda verificar los backups que han sido realizados correctamente.

Crea el inicio del registro de log en el archivos, grabando una cabecera en el cual insterte el dia y hora de inicio del backup:

echo " " >> $LOG
echo " " >> $LOG
echo "|--------------------------------------------" >> LOG
echo " Sincronización iniciada en $INICIO" >> $LOG

Esa es la linea que realiza el backup en realidad. Invoca al comando rsyn y invoca los parametros de cuales archivos copiar y para que destino. A cada archivo copiado, una linea será insertada en el archivo de log. De esta forma el administrador puede saber cuales de los archivos fueron copiados en el backup de un día determinado.

sudo rsync -Cravzp /carpeta-de-origen/ /carpeta-de-destino/ >> $LOG

Almacena el momento de término del backup en la variable FINAL, en el formato:

FINAL=`date +%d/%m/%Y-%H%:M:%S`

Finaliza el archivo de backup con un pie en el cual inserta el día y la hora del termino del backup:

echo " Sincronización Finalizada en $FINAL" >> $LOG
echo "|--------------------------------------------" >> $LOG
echo " " >> $LOG
echo " " >> $LOG

Observaciones: En caso de que desees modificar los parametros del rsync para la copia, consulta el manual de rsync con el comando rsync.

Se sugiere crear una carpeta en /var/log con el nombre rsync y grabar todos los logs del rsync en esa carpeta.

Programando cron para realizar el backup

Cron es un servicio de Linux que es cargado durante el proceso de boot del sistema. Funciona como un programador de tareas que permite programar la ejecución de comandos y procesos de manera repetitiva para un trabajo en especifico.

El daemon (una especie de programa que ejecuta tareas en segundo plano) cron ejecuta los comandos en los días y horarios especificados. A cada minuto el daemon verifica si hay alguna tarea a ser ejecutada.

Todas las acciones del cron son realizads en base de registros en una especie de tabla conocida como crontab.

Para los familiarizados con GNU/Linux, No hay secretos para la configuración del cron via linea de comando.

Para los que poseen menos dominio de Linux sugiero que instalen el Webmin. Se trata de una herramienta de administración atraves de interfaz web que facilita mucho la vida del administrador.

Para instalar el Webmin, puede descargar desde:

http://www.webmin.com/download.html


A los usuarios de Debian y Ubuntu y otras distros derivados de debian pueden descargar el paquete .deb.

Si utilizamos Debian escribimos como root:

# dpkg -i webmin_version-del-webmin-copiado.deb

Si utilizas ubuntu escribe:

$ sudo dpkg -i webmin_version-del-webmin-copiado.deb

En caso de que presente dependencias en otros paquetes, instalamos los paquetes que solicita.

Ya con el Webmin instalado, accedemos en el navegador en la dirección https://192.168.1.11:10000 y escriba su usuario de sistema GNU/Linux.

Dentro del Webmin, accedemos al menu Sistema > Tareas programadas (CRON).

No elimine las tareas ya existentes! puede producir algunos daños al sistema.

Accedemos en la opción "Crear nueva tarea programada".

En la próxima Ventana, una propuesta de tarea sería:

Ejecutar tarea programada como: root
Activo: si
Descripción: <descriva aqui su tarea para que puedas acordarte despes>
Ejecutar cuando: Horarios y días seleccionados abajo
Minutos: Seleccionados 0
Hora: Seleccionados 17
Dias: Todos
Meses: Todos
Dias da semana: Todos
Ejecutar en qualquer día: si

Su backup programado esta listo!

Verifique en el primer backup si los archivos fueron copiados correctamente para el destino y confirme el registro de log del archivo. Si todo esta ok, en los momentos indicados el backup programado ira funcionando automáticamente, sin intervención manual.

Mais informaciones
sobre el rsync en:
http://samba.anu.edu.au/rsync/

sobre el Webmin en:
http://www.webmin.com/

Espero les sea de ayuda