depura_ficheros.sh
depura_ficheros.sh
depura_ficheros.sh
Este script elimina backups antiguos de varias carpetas destino de pfSense.
Uso en la infraestructura
Se usa para aplicar retencion a copias de configuracion de firewall y evitar que el destino de backups crezca sin control.
| Rol | Servicio | Impacto si falla |
|---|---|---|
| Retencion | Backups pfSense | El disco de backups puede llenarse |
| Higiene | XML antiguos | Se acumulan copias sin valor operativo |
| Control de riesgo | Firewall | Un patron incorrecto puede borrar mas de lo esperado |
Debe probarse primero con find ... -print antes de usar borrado.
Invocacion
Se llama desde:
1
/ruta/origen/scripts/pfsense/pfsense_backups_auto.sh
Flujo
- Define tres rutas destino de backups.
- Ejecuta
finden cada destino. - Elimina ficheros con mas de 15 dias.
- Registra errores con codigos de salida diferentes por carpeta.
Script original
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/bash
LOG=/var/log/depura_pfsense.log
FECHA=D$(date +%Y%m%d)
sz_ORIONAD='/ruta/destino/backups/pfsense/fw1'
sz_PFSENSE='/ruta/destino/backups/pfsense/fw2'
sz_PFSENSE2='/ruta/destino/backups/pfsense/fw3'
echo "Depuro carpeta ORIONAD" >> $LOG
find $sz_ORIONAD -mtime +15 -exec rm {} \;
if [ $? -ne 0 ]; then echo "Error al depurar ORIONAD" >> $LOG; exit 5; else
echo "Depuro carpeta PFSENSE" >> $LOG
find $sz_PFSENSE -mtime +15 -exec rm {} \;
if [ $? -ne 0 ]; then echo "Error al depurar PFSENSE" >> $LOG; exit 7; else
echo "Depuro carpeta PFSENSE2" >> $LOG
find $sz_PFSENSE2 -mtime +15 -exec rm {} \;
if [ $? -ne 0 ]; then echo "Error al depurar PFSENSE2" >> $LOG; exit 9; else
echo "Proceso finalizado correctamente"
exit 0
fi; fi; fi
exit 0
Version revisada
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/env bash
set -euo pipefail
LOG="/var/log/depura_pfsense_$(date +%Y%m%d).log"
DIAS_RETENCION="${DIAS_RETENCION:-15}"
destinos=(
"/ruta/destino/backups/pfsense/fw1"
"/ruta/destino/backups/pfsense/fw2"
"/ruta/destino/backups/pfsense/fw3"
)
for destino in "${destinos[@]}"; do
printf '[%s] Depurando %s\n' "$(date --iso-8601=seconds)" "$destino" >> "$LOG"
find "$destino" -type f -name '*.xml' -mtime +"$DIAS_RETENCION" -print -delete >> "$LOG" 2>&1
done
Riesgos y mejoras
- Añadir
-type fpara evitar borrar directorios. - Registrar con
-printlo eliminado. - Entrecomillar variables.
- Permitir
DIAS_RETENCIONconfigurable. - Probar primero con
find ... -printsin-delete.
Cambios y motivo
| Cambio | Motivo |
|---|---|
| array de directorios | evita repetir el mismo bloque por cada firewall |
-type f | no borra directorios por accidente |
-name '*.xml' | limita la limpieza a backups pfSense |
-print -delete | deja evidencia de lo eliminado |
This post is licensed under CC BY 4.0 by the author.