/
Copias de seguridad en Internet (Backup Online
Search
Try Notion
Copias de seguridad en Internet (Backup Online
Fecha publicación
2021/12/21
#
27
Dificultad
Intermedio
3 more properties
Este es uno de esos puntos que siempre se olvidan cuando se va con prisas. Pero un buen plan de rescate en caso de problemas es vital para cualquier sistema informático y nuestro IoT Gateway no es una excepción.
Para ello usaremos la herramienta duplicity, Está aplicación programada en Python usa tar + gzip + gpg para hacer las copias.
Almacenando la información en un servidor de Internet de nuestra propiedad donde instalaremos el servicio rsync.
La comunicación entre el servidor rsync y el IoT Gateway se realizará a través de Zerotier, para tener un canal seguro lejos de miradas indiscretas.
Esquema copias de seguridad online
Se usa la aplicación duplicity, esta aplicación esta programada en Python y usa tar + gzip + gpg para hacer las copias. Además soporta muchisimos tipos de repositorios de datos diferentes.
Duplicity soporta varios tipos de repositorios para guardar las copias de seguridad. Nosotros usaremos el repositorio rsync.
Política de retención
Copias de seguridad copletas cada mes
Incrementales cada día
Se mantienen dos copias completas en el repositorio con sus respectivas incrementales
Los ficheros de la copia son de 100MB
Estrategia de las copias de seguridad
Se hacen copias de seguridad del sistema completo
Cada servicio, puede contener, el directorio backup dentro de la estructura /docker-data/SERVICIO/backup
En la documentación de cada servicio hay las instrucciones de backup del mismo
El backup completo de máquina, incluye la ejecución de los backup propios por servicio antes de copiar la máquina
# linia del backup que llama a los backup de los servicios que necesitan procedimientos propios find /docker-data/ -name backup.sh -exec {} \;
Bash
El repositorio remoto es un servidor rsync que esta accesible des de la red Zerotier, o directamente a través de Internet.
Repositorio de copias de seguridad
Se asume que ya tenemos instalado y configurado el servicio de VPN entre el gateway y el servidor.
Lo siguiente será instalar rsync y configurarlo
Instalar servidor rsync
apt install rsync
Bash
Crear usuario de sistema que será propietario del directorio donde se guardan las copias de seguridad:
useradd rsync
Bash
Creamos fichero de configuración de rsync
/etc/rsyncd.conf
uid = rsync gid = rsync pid file = /var/run/rsyncd.pid read only = false hosts allow = * port = 873 # address = a.b.c.d [backup] path = PATH_DONDE_GUARDAREMOS_EL_BACKUP secrets file = /etc/rsyncd.secrets
Bash
Creamos el fichero de contraseñas:
/etc/rsyncd.secrets
USUARIO_DEL_GATEWAY:EL_PASSWORD_SIN_CIFRAR
Bash
Cambiamos propietario y permisos del fichero de passwords:
chown rsync.rsync /etc/rsyncd.secrets chmod 600 /etc/rsyncd.secrets
Bash
Añadir servicio rsync en la secuencia de arranque del equipo y lo iniciamos:
systemctl enable rsync systemctl start rsync
Bash
Instalación de rsync en el IoT Gateway
add-apt-repository ppa:duplicity-team/duplicity-release-git apt install duplicity
Bash
Scripts de backup en el IoT Gateway
Los scripts de backup que usamos estan en este fichero:
Descarga el fichero y lo descoprimes en /opt/backup
mkdir -p /opt/backup cd /opt/backup # copia el fichero backup.tar.gz dentro del directorio /opt/backup tar xvfz backup.tar.gz
Bash
Primero hay que configurarlo, modificando /opt/backup/config:
PASSPHRASE="PASSWORD_CIFRADO_BACKUP" URL="rsync://USUARIO_DEL_GATEWAY:EL_PASSWORD_SIN_CIFRAR@IP_SERVIDOR_BACKUP::PATH_DONDE_GUARDAREMOS_EL_BACKUP"
Bash
Lo siguiente es ponerlo en crontab:
0 1 * * * /opt/backup/full-backup-online.sh 2>&1 | /usr/bin/tee /var/log/backup-online.log
Bash
Obtener lista de ficheros copiados
list-online.sh
#!/bin/bash source config PASSPHRASE=$PASSPHRASE duplicity collection-status $URL 2>&1
Bash
Restore
# Restaurar toda la última copia de seguridad en el directorio indicado PASSPHRASE=clausimetrica duplicity ftp://user:pass@hostname /tmp/restore # Restarurar solo una carpeta, o fichero PASSPHRASE=clausimetrica duplicity --file-to-restore nom_fitxer_o_directori_a_recuperar ftp://user:pass@hostname /tmp/restore # Restarurar la copia de hace 3 días de una carpeta, o un fichero PASSPHRASE=clausimetrica duplicity -t 3D --file-to-restore nom_fitxer_o_directori_a_recuperar ftp://user:pass@hostname /tmp/restore
Bash