Si tenemos un servicio de hosting remoto con FTP, es probable que nos interese subir archivos de bakcup. Esta receta explica como hacerlo con un breve script de BASH.

El script

El ejemplo propuesto es una tarea demasiado sencilla (copia de un fichero de texto al ftp remoto). Sin embargo, puede servite como base para realizar tareas más complejas. Como vamos a hacer labores administrativas es recomendable usar root para crear el script. Además, el fichero contiene información privada (como el usuario y la contraseña del FTP), por lo que es necesario que tenga los permisos adecuados y que otros usuarios no autorizados NO puedan ver tal información.
#!/bin/bash
HOST="ftp.ejemplo.com"
USER="ejemplo"
PASSWD="ejemplo"
SRC="/home/user"
#Directorio local de las copias de seguridad
BACKUP="/home/user/backup"
#Directorio remoto donde irán las copias de seguridad
REMOTE="/backup"

cd $BAKCUP

#Copia del archivo y renombrado con la fecha
cp $SRC/mi_archivo_importante.txt mi_archivo_importante.txt.$(date +%Y%m%d)
echo -e "---- BACKUP $(date +%Y%m%d) ----\n"

ftp -n -v $HOST << EOT
binary
user $USER $PASSWD
prompt

cd $REMOTE
mput mi_archivo_importante.txt.$(date +%Y%m%d)
bye
bye
EOT
Guarda el archivo con el nombre "backup.sh" en el directorio /sbin/ y ponles los permisos correspondientes:
# chmod 700 /sbin/backup.sh
Ahora, solo falta que actualicemos el cron para que esta tarea se ejecute a una determinada fecha y hora. Por ejemplo, vamos a hacer que se lance todos los días a las 12:00 H. De paso, vamos a decirle que la salida la deje en un archivo de log (/var/log/backup.log) para que podamos echarle un vistazo al archivo y saber que todo va bien. Edita, pues, el archivo (/etc/crontab) con tu editor favorito, o sea:
# emacs /etc/crontab
Y añades la siguiente línea:
00 12    * * *   root    /sbin/backup.sh >> /home/user/backup.log 


blog comments powered by Disqus