A diario hago backup en mis servers pero los archivos quedan residentes en las mismas máquinas. Obviamente mientras el backup esté mas lejos de los datos originales menores son las probabilidades de no recuperarse de un desastre computacional.

Lo ideal seria hacer una transmisión FTPS o SFTP si estás preocupado por algun sniffer o similar, pero bueno, aquí vamos a ver la solución fácil y rápida con un shell script muy sencillo.

#!/bin/sh
HOST='www.myserver.com'
USER='myuser'
PASS='mypassword'
#voy a hacer backup del folder creado ayer
YESTERDAY=$(date --date='1 day ago' +%Y%m%d)

# pensemos que dejamos los backups diariamente en este path
# los cuales estan en folders con formato fecha cual
# 20100227 (YYYYMMDD)
cd /home/myuser/backups/
# creo localmente un folder con el mismo nombre
mkdir $YESTERDAY
cd $YESTERDAY

ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASS
# aca vamos a la misma locacion pero en el server
cd /home/myuser/backups/$YESTERDAY
# aca es donde bajamos el archivo que queremos backupear
get backup.tar
quit
END_SCRIPT
exit 0

Y listo, solo nos falta una entrada en el cron para correr esto a diario. Para ello:

crontab -e

Entonces agregamos el script para ser llamado diariamente

0 1 * * * /usr/share/scripts/mybackupscript.sh

Esto soluciona grandes dolores de cabeza con mínimo esfuerzo. Que lo disfruten!


Rodrigo Asensio

Apasionado por la tecnología

2 Comments

david · January 31, 2011 at 1:40 pm

Hola Rodrigo,
Necesito traerme por ftp un archivo de distintas maquinas y el ejemplo que has puesto seria traerse un fichero por ftp de una sola maquina, para poder traerme un fichero *.txt de 100 maquinas distintas como tengo que crear el script??

Rodrigo Asensio · January 31, 2011 at 1:53 pm

No conozco como hacerlo, pero la realidad es que deberias investigar como hacer downloads parciales por file y coordinar entre todos los servers q partes bajo cada uno. Aca hay una solucion aplicada en Java a HTTP http://goo.gl/zZSnV

Leave a Reply

Your email address will not be published. Required fields are marked *