Haciendo tareas de respaldo

En esta ocasión realizaremos una tarea de respaldo.

Imaginemos que tenemos montado un servidor web y hemos seguido los anteriores artículos para montar un proyecto, lo que tocará hacer ahora es un respaldo, y dejarlo programado mediante crontab,

Todo esto lo podemos ejecutar directamente en el terminal, o bien, tener un archivo.sh para ejecutar todas las tareas de manera sencilla.

Copiamos los archivos

Copiamos los archivos de nuestro alojamiento web a una carpeta local

$ sudo cp -r /var/www/html/misitioweb /home/user/respaldomisitioweb/app/tmp/

Con esta instrucción estamos copiando de manera recursiva (-r) todos los archivos y directorios de la carpeta misitioweb a la carpeta tmp

Eliminar archivos de un directorio

Supongamos que en nuestra aplicación tenemos archivos en una carpeta en particular, que por el peso no resultan tan útiles para respaldar y nos interesa borrar, para ello haremos lo siguiente:

$ sudo rm -r /home/user/respaldomisitioweb/app/tmp/logs/

Con esta instrucción eliminamos de manera recursiva los archivos dentro de la carpeta logs

Buscar y eliminar archivos específicos de un directorio

Otro ejemplo para reducir el tamaño de un archivo para respaldo será elliminar archivos multimedia que posiblemente ya tengamos respaldados, para ello podremos hacer lo siguiente:

Posicionarnos en la carpeta donde se encuentran los archivos que queremos localizar

$ cd /home/user/respaldomisitioweb/app/tmp/media/

Buscamos los archivos con la extensión .mp4 y los eliminamos

$ sudo find . -name '*.mp4' -type f -delete

Buscamos los archivos con la extensión .mp3 y los eliminamos

$ sudo find . -name '*.mp3' -type f -delete

Comprimimos la carpeta

Ahora que tenemos ‘limpia’ la carpeta de respaldo es buena idea comprimirla para que use menor espacio, por lo que ejecutamos la siguiente instrucción:

Accedemos a la carpeta que contiene la carpeta a comprimir

$ cd /home/user/respaldomisitioweb/app/

Comprimimos la carpeta y la nombramos usando una nomenclatura, en lo personal me gusta usar una similar a un timestamp

$ sudo tar -zcf appRespaldo_`date +%Y%m%d_%H%M`.tar.gz tmp

La instrucción anterior genera un archivo llamado appRespaldo_20210101_1115.tar.gz suponiendo que se realizó el 01 de enero del 2021 a las 11:15 horas.

Esto lo considero útil porque al generarse tantas veces como sea necesario, no tendremos problemas en visualizar la fecha y hora de creación, así como para mantener un orden en los respaldos.

Eliminar la carpeta temporal

Habiendo hecho todos los pasos anteriores, ahora solo resta eliminar la carpeta tmp que utilizamos para generar el archivo comprimido.

$ sudo rm -fr /home/user/respaldomisitioweb/app/tmp

Automatizando las tareas de respaldo

Como mencioné al inicio del post, las instrucciones son útiles para una tarea de respaldo, si ahora queremos automatizar aun más las tareas, podemos poner todas las instrucciones en un solo archivo.sh para ejecutarlo de manera manual o agregar la tarea mediante crontab.

Crea un archivo con extensión .sh

$ sudo nano /home/user/tarearespaldo.sh

Ponemos todas las instrucciones juntas en un solo archivo

#Copiar archivos
$ sudo cp -r /var/www/html/misitioweb /home/user/respaldomisitioweb/app/tmp/
#Eliminar archivos de carpeta log
$ sudo rm -r /home/user/respaldomisitioweb/app/tmp/logs/
#Eliminar archivos.mp4 y .mp3
$ cd /home/user/respaldomisitioweb/app/tmp/media/
$ sudo find . -name '*.mp4' -type f -delete 
$ sudo find . -name '*.mp3' -type f -delete 
#Comprimir carpeta
$ cd /home/user/respaldomisitioweb/app/
$ sudo tar -zcf appRespaldo_`date +%Y%m%d_%H%M`.tar.gz tmp
#Eliminar directorio tmp
$ sudo rm -fr /home/user/respaldomisitioweb/app/tmp

Para probar que el archivo funciona, ejecutamos el archivo recien creado con la siguiente instrucción:

$ sudo sh /home/user/tareasrespaldo.sh

Esto nos deberá generar un archivo comprimido en /home/user/respaldomisitioweb/app/

Agregar la tarea a crontab

Si de automatizar todo se trata, usaremos ahora crontab para que la tarea de respaldo se realiza de forma automática, por lo que abrimos nuestro crontab personal.

$ crontab -e

Agregamos la siguiente línea, mediante la cual le estamos indicando a crontab que ejecute la tarea de respaldo los días sábado a las 02:00 horas.

0 2 * * 6 sh /home/user/tarearespaldo.sh

Si tienes problemas para editar el crontab, te recomiendo consultar en enlace donde hablo de crontab y de vim

Una vez que cerremos crontab, se instalará la nueva tarea, con lo cual ya podremos tener un respaldo automatizado.

Referencias internas

Referencias externas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *