Backups de datos en Sudocu

Ha grandes Rasgos es lo que vos mencionas.
A) Hacer backups de la base de datos periódicamente con script como este:


backupspostgres.sh
```bash
#!/bin/sh
#Creo un directorio con la fecha
cd /home/dba/Backups/PostGres/
PATH_B="/home/dba/Backups/PostGres/"

NOW=$(date +"%Y-%m-%d-%H-%M")
DirBackup=Postgres$NOW

PathBackup=Postgres`date +%F`
mkdir -p $PathBackup

#Exporto la base con pg_dump
cd $PathBackup
pg_dump -U postgres base > base.sql
cd ..

#comprimo el directorio
tar -cvzf $DirBackup.tgz $PathBackup
rm -r $PathBackup
#borro los archivos tgz con 10 dias de antiguedad
find $PATH_B/* -name '*.tgz' -mtime +10 -exec rm {} \;

Nota: El script en postgres debe ser ejecutado como usuario postgres y en el crontab de ese usuario

B) Hacer backups de Nuxeo que es algo asi:
Hacer una copia de la pbase de postgres en el nuxeo origen y de la carpeta con los pdfs usando el script que compartí en el otro hilo.
Este script deberia usarse a diario.

C) Por otro lado Sudocu usa volumenes por lo que ademas quizas deberias hacer backups del volumen:

I) Levantando el volumen para backup
Como se está en producción, se necesita PRIMERO levantar una segunda carpeta en el contenedor que esta corriendo (para copiar desde dentro del contenedor todos los archivos al servidor nfs).
Para hacer esto se procede de la siguiente forma:
En sudocu.yml se agrega un volume adicional, vinculandolo a otra carpeta del contenedor:

volumes:
 files:
 sudocu_files:
   driver: local
   driver_opts:
     type: nfs
     o: nfsvers=4,addr=10.1.64.101,rw
     device: ":/recursos_nfs/sudocu_storage"

(notese que el volume files sigue sin configurarse, sino que se agrega otro volumen llamado sudocu_files)

Dentro del servicio api-server en la sección volumes se agrega el segundo volumen recién creado:

   volumes:
     - files:/app/sudocu-files
     - sudocu_files:/app/sudocu-files-bkp

Luego de tener configurado así sudocu.yml, se hace un nuevo deploy del stack sudocu (solo actualización de containers)

docker stack deploy --with-registry-auth --compose-file sudocu.yml sudocu

Esto hace que se levante el segundo “volume” vinculado al sevidor nfs, en la carpeta del contenedor /app/sudocu-files-bkp

II) Backupeando los archivos

Luego de hacer esto, nos conectamos al bash del contenedor para correr el comando para copiar lo que hay en /app/sudocu-files a la carpeta /app/sudocu-files-bkp

docker exec -it sudocu_api-server.1.r5hqywh18tdf9owi7qn4fx78i /bin/bash

y ya dentro del contenedor se ejecuta

cp -p -r /app/sudocu-files /app/sudocu-files-bkp

(-p para que preserve los atributos, y -r para que lo haga de forma recursiva)

Hecho esto, se copiaron todos los archivos y estructura de directorios al servidor nfs

NOTA: Después hay que bajarlos un nivel de path, pues con ese comando se copian creando una carpeta adicional sudocu-files que al momento de implementar no tiene que estar... es decir, que en el servidor NFS se copia todo a /recursos*nfs/sudocu_storage/sudocu-files/* , hay que bajarlos a /recursos*nfs/sudocu_storage/*

III) Restaurando el estado anterior
Ya con todos los archivos copiados al volumen NFS

  • Se procede a bajar el stack
  • Eliminar los volumes involucrados
docker stack rm sudocu
docker volume rm sudocu_files
docker volume rm sudocu_sudocu_files
  • Eliminar de la configuración el segundo volumen denominado sudocu_files
  • Volver a hacer el deploy para dejar todo como al inicio
docker stack deploy --with-registry-auth --compose-file sudocu.yml sudocu