Copias de seguridad en Internet (Backup Online

Fecha publicación
#
27
Dificultad
Intermedio
3 more properties
Publicado
tags
i40sys, industry 4.0, industry40.systems, industrial, plc, siemens, omron, ubuntu, linux, iot gateway, gateway, iot, internet of things, docker, container, ubuntu, node-red, programming, influxdb, database, bases de datos, series temporales, bbdd, db, query, flux, grafana, graficos, dashboard, dashboards, homer, nginx, darkhttpd, reverse proxy, rproxy, proxy, backup, duplicity, copias de seguridad, restore


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

Política de retención

Estrategia de las copias de seguridad

Repositorio de copias de seguridad

Instalar servidor rsync

Bash
apt install rsync
Crear usuario de sistema que será propietario del directorio donde se guardan las copias de seguridad:
Bash
useradd rsync
Creamos fichero de configuración de rsync

/etc/rsyncd.conf

Bash
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
Creamos el fichero de contraseñas:

/etc/rsyncd.secrets

Bash
USUARIO_DEL_GATEWAY:EL_PASSWORD_SIN_CIFRAR
Cambiamos propietario y permisos del fichero de passwords:
Bash
chown rsync.rsync /etc/rsyncd.secrets
chmod 600 /etc/rsyncd.secrets
Añadir servicio rsync en la secuencia de arranque del equipo y lo iniciamos:
Bash
systemctl enable rsync
systemctl start rsync

Instalación de rsync en el IoT Gateway

Bash
add-apt-repository ppa:duplicity-team/duplicity-release-git
apt install duplicity

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
Bash
mkdir -p /opt/backup
cd /opt/backup
# copia el fichero backup.tar.gz dentro del directorio /opt/backup
tar xvfz backup.tar.gz
Primero hay que configurarlo, modificando /opt/backup/config:
Bash
PASSPHRASE="PASSWORD_CIFRADO_BACKUP"
URL="rsync://USUARIO_DEL_GATEWAY:EL_PASSWORD_SIN_CIFRAR@IP_SERVIDOR_BACKUP::PATH_DONDE_GUARDAREMOS_EL_BACKUP"
Lo siguiente es ponerlo en crontab:
Bash
0 1 * * * /opt/backup/full-backup-online.sh 2>&1 | /usr/bin/tee /var/log/backup-online.log 

Obtener lista de ficheros copiados

list-online.sh

Bash
#!/bin/bash

source config

PASSPHRASE=$PASSPHRASE duplicity collection-status $URL 2>&1

Restore

Bash
# 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