Copia de seguridad de un servidor a otro por ssh utilizando curl

Linux
Linux

Bienvenidos a VerTutoriales.com, siguiendo con la administración de servidores Linux. Hoy os explico como realizar una copia de seguridad de un servidor a otro por SSH utilizando Curl implementado con ficheros Bash

No podemos olvidar los backup, aquello que hasta que no nos da un susto lo suficientemente grande para que la siguiente vez sea lo primero que se hace. A quien le haya pasado sabrá de lo que hablo 😉

Para sacar copias de seguridad, lo que vamos a utilizar es un fichero por lotes conocido como archivos bash. Estos archivos bash en sistemas linux sirven para poder procesar varias líneas de ejecución, a la vez de poder incluso utilizar variables dentro del mismo para reutilizarlo en el mismo fichero. Por decir, incluso pueden recibir parámetros y que sean utilizados dentro de su ejecución.

Aunque en este tutorial no vamos a profundizar tanto, siempre es interesante saber lo que puede hacer para que luego cada uno investigue por su cuenta. Dicho esto, vamos a ver el fichero bash que me preparé para la copia de seguridad:

#!/bin/bash
find /backup/*.zip -mtime +1 -type f -exec rm -f \{\} \;
zip -1 -r /backup/copia-$(date +%Y%m%d).zip /backup/
curl -T /backup/copia-$(date +%Y%m%d).zip -u user:pass ftp://miservidor.ftp.com/

Vamos a ver cada línea lo que hace

Esta primera línea:

find /backup/*.zip -mtime +1 -type f -exec rm -f \{\} \;

Find sirve para buscar archivos, en nuestro caso, ejecutamos también un comando de eliminación con -exec, para eliminar lo que sea más antiguo de -mtime +1, podéis ver información más detallada en el anterior tutorial de eliminar archivos con una fecha «anterior a» con SSH

La siguiente línea, es una ejecución de zip:

zip -1 -r /backup/copia-$(date +%Y%m%d).zip /backup/

Con zip, comprime todo lo que haya con fecha $(date +%Y%m%d), esto es la fecha del día de hoy, esto en realidad lo utilizo de esta manera, por que con anterioridad, lanzo un script de compresión de una carpeta por subcarpetas, de manera que me genere un archivo comprimido por carpeta-fecha, de esta manera puedo ir manteniendo diferentes copias por diferentes días.

Finalmente por terminar la copia con CURL

curl -T /backup/copia-$(date +%Y%m%d).zip -u user:pass ftp://miservidor.ftp.com/

Con CURL lo que indicamos es por un lado el fichero con -T , se le pasa la ruta, puede ser absoluta o relativa a la ruta desde la cual se ejecuta, igualmente utilizamos la función date para la fecha, de esta manera será solo lo que tengamos del día de hoy, a continuación paso el par de user:pass y finalmente la dirección FTP donde estará el servidor donde realizaré la copia.

En  conclusión, el primer código es el complementario de uno anterior en el cual se realiza una copia fechada con el día de hoy, que no es el tema del tutorial en cuestión (si tenéis interés podéis pedirlo). Y finalmente pues tenemos como eliminar lo antiguo para ir limpiando lo antiguo, se comprime con la nueva fecha y finalmente copiamos al servidor FTP externo.

¿Por qué realizo una copia duplicada y no limpio todo al terminar?

Bueno, quizás fuera lo más óptimo a nivel de recursos, aunque la verdad que los años me ha enseñado a tener las últimas copias en el mismo servidor, si hubiera cualquier problema, lo más rápido será acceder al mismo servidor que tengo la copia más actual y utilizarla. Pongo un caso real, una web de más de 15GB, el tener que ir a descargar el backup y encontrar el fichero dañado o la información perdida, me llevaría a localizar la copia, descargarla en el servidor (en mi pc será un buen rato de más, sobre todo si tienes al cliente encima), descomprimirlo (que también se lleva su tiempo), etc… Vamos, que el ahorro de tiempo es considerable. Es por eso que tengo una copia en el propio servidor. es más fácil descomprimir directamente por el día que se quiera y copiar en un plis.

Espero que os sirva, el vídeo que acompaña viene incluso la instalación de CURL en el sistema operativo. Así que completo desde 0 y explicado en menos de 3 minutos reales 😉

Dudas y agradecimientos en los comentarios! 🙂

 

Carlos Dk

Apasionado por la enseñanza y el SEO

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.