Post

Rsync config libra y Nextcloud

Rsync config libra y Nextcloud

Rsync config libra y Nextcloud

Estos scripts sincronizan herramientas hacia Nextcloud y recuperan configuraciones de un host remoto.

Uso en la infraestructura

Se usa para conservar scripts y configuraciones de un host de servicios en una ubicacion accesible desde Nextcloud o desde una maquina de administracion.

RolServicioImpacto si falla
Copia operativa/toolsSe pierden scripts o no llegan a la nube
Configuracionnginx/Let’s EncryptCuesta reconstruir reverse proxies y certificados
PermisosNextcloudLos ficheros sincronizados pueden quedar inaccesibles

Es backup de configuracion y soporte operativo; no sustituye el backup completo de datos.

Script original sync Nextcloud

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/bin/bash
LOG=/var/log/sync_files_a_nextcloud.log

echo "Inicia la sincronizacion de documentos hacia la nube" > $LOG
echo "Monta la unidad remota" >> $LOG
mount <HOSTNAME>:/ruta/destino/nextcloud/files /mnt/nextcloud >> $LOG
if [ $? -ne 0 ]
then
        echo "Error montando la unidad remota" > $LOG
        exit 5
else
        echo "Sincronizamos las rutas" >> $LOG
        rsync -r -t -p -o -g -l -H -i -s /ruta/origen/tools /mnt/nextcloud/libra/ >> $LOG
if [ $? -ne 0 ]
then
        echo "Error en la  sincronizacion" >> $LOG
        exit 7
else
        echo "Desmonta la unidad remota" >> $LOG
        umount -l /mnt/nextcloud >> $LOG
if [ $? -ne 0 ]
then
        echo "Error desmontando unidad remota" >> $LOG
        exit 9
else
        echo "Ejecutamos script remoto para permisos ficheros" >> $LOG
        su - <USUARIO> -c "ssh <USUARIO>@<HOSTNAME> 'sudo /ruta/origen/scripts/permiso_ficheros_fisher_libra.sh'"
if [ $? -ne 0 ]
then
        echo "Problemas con el cambio de permisos" >> $LOG
        exit 11
else
        echo "Sincronizacion finalizada con exito" >> $LOG
fi
fi
fi
fi
exit 0

Script original recuperar configuracion

1
2
3
4
5
6
7
#!/bin/bash

rsync -avzie ssh <HOSTNAME>:/ruta/origen/nginx/sites-enabled/ /ruta/destino/nginx/sites-enabled
rsync -avzie ssh <HOSTNAME>:/ruta/origen/nginx/sites-available/ /ruta/destino/nginx/sites-available
rsync -avzie ssh <HOSTNAME>:/ruta/origen/letsencrypt/ /ruta/destino/letsencrypt

exit 0

Version revisada de sync hacia Nextcloud

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/env bash
set -euo pipefail

LOG="/var/log/sync_files_a_nextcloud_$(date +%Y%m%d).log"
MOUNT_DESTINO="/mnt/destino/nextcloud"
NFS_DESTINO="<HOSTNAME>:/ruta/destino/nextcloud/files"

mount "$NFS_DESTINO" "$MOUNT_DESTINO"
trap 'umount -l "$MOUNT_DESTINO" 2>/dev/null || true' EXIT

rsync -rtpoglisH /ruta/origen/tools/ "$MOUNT_DESTINO/libra/tools/" >> "$LOG" 2>&1

ssh <USUARIO>@<HOSTNAME> 'sudo /ruta/origen/scripts/permiso_ficheros.sh'

Version revisada de recuperar configuracion

1
2
3
4
5
6
#!/usr/bin/env bash
set -euo pipefail

rsync -avz -e ssh <HOSTNAME>:/ruta/origen/nginx/sites-enabled/ /ruta/destino/nginx/sites-enabled/
rsync -avz -e ssh <HOSTNAME>:/ruta/origen/nginx/sites-available/ /ruta/destino/nginx/sites-available/
rsync -avz -e ssh <HOSTNAME>:/ruta/origen/letsencrypt/ /ruta/destino/letsencrypt/

Recomendaciones

  • Usar barras finales de forma consistente en rsync.
  • Evitar montar en rutas compartidas si hay varias tareas concurrentes.
  • Probar con rsync -n antes de activar sincronizacion bidireccional o destructiva.
  • No copiar claves de Let’s Encrypt sin cifrado o permisos restrictivos.

Cambios y motivo

CambioMotivo
trap para desmontardesmonta aunque falle rsync o el SSH remoto
barras finales en rsyncaclara si se copia carpeta o contenido
rutas origen/destino explicitassepara configuracion recuperada de backup de datos
advertencia sobre Let’s Encryptcontiene claves privadas y requiere permisos estrictos
This post is licensed under CC BY 4.0 by the author.