depuro_neptuno_90.sh
depuro_neptuno_90.sh
depuro_neptuno_90.sh
Este script depura copias antiguas en el destino mensual de backups de Nextcloud.
Uso en la infraestructura
Se usa para aplicar retencion en el almacenamiento externo y evitar que los backups llenen el destino.
| Rol | Servicio | Impacto si falla |
|---|---|---|
| Retencion | Backups SQL/filesystem | El destino puede quedarse sin espacio |
| Limpieza diferenciada | Nextcloud data | Puede conservar o borrar mas de lo esperado |
| Control mensual | NAS/almacenamiento | La ventana de backup siguiente puede fallar |
Es una tarea sensible: antes de activar -delete, conviene probar el mismo find solo con -print.
Invocacion
1
/ruta/origen/scripts/muevo_filesystems_neptuno.sh
Flujo
- Monta el destino remoto de backups mensuales.
- Borra SQL,
etc,wwwytoolscon mas de 90 dias. - Borra
datacon mas de 59 dias. - Registra errores por bloque.
Script original
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
39
40
41
42
#!/bin/bash
LOG=/var/log/depuro_neptuno_90.log
logline() {
echo "$(date '+%Y-%m-%d %H:%M:%S') $*" >> "$LOG"
}
sz_ETC_Neptuno='/ruta/destino/backups-mensuales/nextcloud/etc'
sz_TOOLS_Neptuno='/ruta/destino/backups-mensuales/nextcloud/tools'
sz_WWW_Neptuno='/ruta/destino/backups-mensuales/nextcloud/www'
sz_DATA_Neptuno='/ruta/destino/backups-mensuales/nextcloud/nextcloud/data'
sz_SQLS_Neptuno='/ruta/destino/backups-mensuales/nextcloud/sqls'
logline "Inicia el proceso de depuracion de copias" > $LOG
logline "Montamos la unidad de neptuno"
mount <HOSTNAME>:/ruta/destino/backups-mensuales/nextcloud /ruta/destino/backups-mensuales/nextcloud
if [ $? -ne 0 ]; then
logline "Error montando la unidad de neptuno"
exit 3
else
echo "Depuro carpeta sql" > $LOG
find $sz_SQLS_Neptuno -mtime +90 -exec rm {} \;
if [ $? -ne 0 ]; then logline "Error al mover sql"; exit 5; else
logline "Depuro carpeta etc"
find $sz_ETC_Neptuno -mtime +90 -exec rm {} \;
if [ $? -ne 0 ]; then logline "Error al mover etc"; exit 7; else
logline "Depuro carpeta www"
find $sz_WWW_Neptuno -mtime +90 -exec rm {} \;
if [ $? -ne 0 ]; then logline "Error al mover www"; exit 11; else
logline "Depuro carpeta tools"
find $sz_TOOLS_Neptuno -mtime +90 -exec rm {} \;
if [ $? -ne 0 ]; then logline "Error al mover tools"; exit 13; else
logline "Depuro carpeta data"
find $sz_DATA_Neptuno -mtime +59 -exec rm {} \;
if [ $? -ne 0 ]; then logline "Error al mover data"; exit 15; else
logline "Desmontamos la unidad de neptuno, PERO YA NO SE DESMONTA PARA QUE NO COCHE CON EL BCK DE LAS 4:30"
logline "Proceso finalizado correctamente"
exit 0
fi; fi; fi; fi; fi
fi
sleep 50
exit 0
Version revisada
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/env bash
set -euo pipefail
LOG="/var/log/depuro_neptuno_$(date +%Y%m%d).log"
MOUNT_DESTINO="/mnt/destino/backups-mensuales/nextcloud"
NFS_DESTINO="<HOSTNAME>:/ruta/destino/backups-mensuales/nextcloud"
mount "$NFS_DESTINO" "$MOUNT_DESTINO"
trap 'umount -l "$MOUNT_DESTINO" 2>/dev/null || true' EXIT
find "$MOUNT_DESTINO/sqls" -type f -mtime +90 -print -delete >> "$LOG" 2>&1
find "$MOUNT_DESTINO/etc" -type f -mtime +90 -print -delete >> "$LOG" 2>&1
find "$MOUNT_DESTINO/www" -type f -mtime +90 -print -delete >> "$LOG" 2>&1
find "$MOUNT_DESTINO/tools" -type f -mtime +90 -print -delete >> "$LOG" 2>&1
find "$MOUNT_DESTINO/nextcloud/data" -type f -mtime +59 -print -delete >> "$LOG" 2>&1
Riesgos y mejoras
- Usar
-type fpara evitar borrar directorios. - Añadir
-printpara auditar eliminaciones. - Probar primero sin
-delete. - Separar retenciones por tipo de dato en variables.
Cambios y motivo
| Cambio | Motivo |
|---|---|
find -type f | evita intentar borrar directorios por accidente |
-print -delete | deja rastro de lo eliminado |
trap de desmontaje | controla el mount incluso si falla una limpieza |
| retenciones explicitas | hace visible por que data usa 59 dias y otros 90 |
This post is licensed under CC BY 4.0 by the author.