Copias de seguridad desde Centos a Mega con Rclone

Copias de seguridad desde Centos a Mega con Rclone

Saludos a todos los apasionados de las tecnologías web. En esta ocasión les voy a compartir como hacer copias de seguridad desde un servidor Centos hacia una cuenta en Mega. Para eso explicaremos cada paso:

La tarea que se nos presento con un cliente fue hacer el respaldo de su sitio web completo y base de datos en mysql.

La ruta donde esta la web se encuentra en el habitual /var/www/html. En esta ruta crearemos una carpeta backup y dentro de esta carpeta crearemos un archivo backup.sh que contendrá el código para hacer el respaldo. A diferencia de otros post de backup de mysql, en esta oportunidad haremos un respaldo full de cada base de datos por separado.

Creamos la carpeta backup y sus respectivos permisos

cd /var/www/html
mkdir backup
chmod 777 -R backup
ShellScript

Creamos el archivo backup.sh

touch backup.sh
ShellScript

Ingresamos el código para el respaldo de cada base de datos en mysql

#!/bin/bash

USER="usuario-mysql"
PASSWORD="clave-mysql"

FECHA_ACTUAL=`date +%Y-%m-%d`
HORA_ACTUAL=`date +%H:%M`
ARCH_RESP=$FECHA_ACTUAL-$HORA_ACTUAL


databases=`mysql -u $USER -p$PASSWORD -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`

for db in $databases; do
    if [[ "$db" != "information_schema" ]] && [[ "$db" != "performance_schema" ]] && [[ "$db" != _* ]] ; then
       # echo "Dumping database: $db"
        mysqldump -u $USER -p$PASSWORD --databases $db | gzip > $db"_"$ARCH_RESP.sql.gz
    fi
done
ShellScript

Ahora le damos permiso a archivo sh creado

chmod +x /var/www/html/backup/backup.sh
ShellScript

Hasta este paso ya tenemos el script que hará los backups de mysql. Ahora pasamos a rclone.

Primero nos creamos una cuenta en https://mega.nz y creamos una carpeta backup_sitio que sera la carpeta de destino.

Instalamos rclone

yum install rclone
ShellScript

Una vez instalado lo configuramos

rclone config
ShellScript

En el sgte. menú seleccionamos New remote, presionando la tecla n

No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> <strong>n</strong>
ShellScript

Agregamos un nombre a nuestra unidad remota, en mi ejemplo «remoto»

name> <strong>remoto</strong>
ShellScript

En el sgte. menú le mostrará todos las unidades o servicios de almacenamiento, escriba mega

Type of storage to configure.
Choose a number from below, or type in your own value
[snip]
XX / Mega
    "mega"
[snip]
Storage> <strong>mega</strong>
ShellScript

En el sgte. menú ingrese su cuenta de correo de mega

User name
user> <strong>tucorreomega@correo.com</strong>
ShellScript

En el sgte. menú ingresamos seleccionamos la opción y) con la tecla «y» y completamos nuestra clave mega

Password.
y) Yes type in my own password
g) Generate random password
n) No leave this optional password blank
y/g/n><strong> y</strong>
Enter the password:
password:
Confirm the password:
password:
Remote config
--------------------
[remote]
type = mega
user = you@example.com
pass = *** ENCRYPTED ***
--------------------
ShellScript

En el último menú confirmarmos con «y» y salimos con la tecla «q»

y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y
ShellScript

Con esto hemos creado nuestro nombre «remoto» de origen que lo conectaremos con la carpeta en mega «backup».

Ahora procederemos a crear las tareas programadas que harán el trabajo de ejecutar los backups y enviar a mega.

crontab -e
ShellScript

Añadimos 3 tareas, el primero ejecuta el archivo backup.sh cada 6 horas. El segundo elimina copias de mysql mayor a 7 dias a los 10 minutos sgtes. y el 3ero envía 10 mins. después con rclone todo el contenido de la carpeta html a mega de manera incremental, solo los archivos creados desde el 01-07-2022 ignorando los ya existentes, creando carpetas vacias y excluyendo archivos de una carpeta especifica..

0 */6 * * * cd /var/www/html/backup && sh backup.sh
10 */6 * * * find /var/www/html/backup/*.sql.gz -mtime +7 -exec rm {} ;
20 */6 * * * rclone sync /var/www/html remoto:<strong>backup_sitio</strong> --max-age 2022-07-01 --ignore-existing --create-empty-src-dirs --exclude "/carpeta_con_contenido_a_excluir/**"
ShellScript

Con esto ya podemos ahora otra vez descansar tranquilos. Servidos!

Comentarios

No hay comentarios aún. ¿Por qué no comienzas el debate?

Deja una respuesta

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