41 lines
1.4 KiB
Bash
41 lines
1.4 KiB
Bash
#!/bin/bash
|
|
|
|
# Verifica se il parametro --force è presente
|
|
DRY_RUN=true
|
|
if [[ "$1" == "--force" ]]; then
|
|
DRY_RUN=false
|
|
fi
|
|
|
|
echo "--------------------------------------------------------"
|
|
echo "--- Snapshot di replica più vecchi di 24 ore ---"
|
|
echo "--------------------------------------------------------"
|
|
|
|
# Troviamo gli snapshot, calcoliamo la data di creazione e filtriamo
|
|
zfs list -t snapshot -H -o name,creation | grep "__replicate_" | while read -r line; do
|
|
SNAP_NAME=$(echo $line | awk '{print $1}')
|
|
# Estraiamo la data (formato semplice per confronto)
|
|
CREATION_DATE=$(echo $line | awk '{print $2" "$3" "$4" "$5" "$6}')
|
|
|
|
# Trasformiamo la data in secondi per il confronto
|
|
SNAP_SEC=$(date -d "$CREATION_DATE" +%s)
|
|
NOW_SEC=$(date +%s)
|
|
DIFF_HOURS=$(( ($NOW_SEC - $SNAP_SEC) / 3600 ))
|
|
|
|
if [ $DIFF_HOURS -gt 24 ]; then
|
|
if [ "$DRY_RUN" = true ]; then
|
|
echo "DA ELIMINARE: $SNAP_NAME (Età: $DIFF_HOURS ore)"
|
|
# Qui non eseguiamo il comando reale
|
|
else
|
|
echo "Eliminazione effettiva dello snapshot: $snapshot"
|
|
zfs destroy $SNAP_NAME
|
|
fi
|
|
fi
|
|
done
|
|
|
|
if [ "$DRY_RUN" = true ]; then
|
|
echo "--------------------------------------------------------"
|
|
echo ""
|
|
echo "Operazione completata in modalità simulazione."
|
|
echo "Per eliminare realmente, usa: $0 --force"
|
|
fi
|