feat : ajout de la rotation pour les scripts de backup
This commit is contained in:
@@ -45,9 +45,11 @@ set +a
|
||||
# Variables backup
|
||||
#######################################
|
||||
DATE="$(date +'%Y-%m-%d_%H-%M-%S')"
|
||||
BACKUP_NAME="vaultwarden-backup-${DATE}.tar.gz"
|
||||
BACKUP_PREFIX="vaultwarden-backup"
|
||||
BACKUP_NAME="${BACKUP_PREFIX}-${DATE}.tar.gz"
|
||||
LOCAL_BACKUP_DIR="$LOCAL_BACKUP"
|
||||
LOCAL_BACKUP_FILE="${LOCAL_BACKUP_DIR}/${BACKUP_NAME}"
|
||||
RETENTION_DAYS=10
|
||||
|
||||
SSH_OPTS=(-i "$SSH_KEY" -o IdentitiesOnly=yes -o BatchMode=yes -o ConnectTimeout=10)
|
||||
|
||||
@@ -110,6 +112,8 @@ log "Destination distante : ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR}"
|
||||
tar -czf "$LOCAL_BACKUP_FILE" -C "$(dirname "$DATA_DIR")" "$(basename "$DATA_DIR")" \
|
||||
|| fail "Erreur lors de la compression du dossier $DATA_DIR"
|
||||
|
||||
log "Backup local créé : $LOCAL_BACKUP_FILE"
|
||||
|
||||
#######################################
|
||||
# Création dossier distant
|
||||
#######################################
|
||||
@@ -122,6 +126,17 @@ ssh "${SSH_OPTS[@]}" "$REMOTE_USER@$REMOTE_HOST" "mkdir -p '$REMOTE_DIR'" \
|
||||
scp "${SSH_OPTS[@]}" "$LOCAL_BACKUP_FILE" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/" \
|
||||
|| fail "Erreur lors de l'envoi du backup vers $REMOTE_HOST"
|
||||
|
||||
log "Backup envoyé sur $REMOTE_HOST:$REMOTE_DIR"
|
||||
|
||||
#######################################
|
||||
# Rotation distante - suppression > 10 jours
|
||||
#######################################
|
||||
ssh "${SSH_OPTS[@]}" "$REMOTE_USER@$REMOTE_HOST" \
|
||||
"find '$REMOTE_DIR' -type f -name '${BACKUP_PREFIX}-*.tar.gz' -mtime +$RETENTION_DAYS -delete" \
|
||||
|| fail "Erreur lors de la rotation distante des sauvegardes"
|
||||
|
||||
log "Rotation distante OK"
|
||||
|
||||
#######################################
|
||||
# Nettoyage local
|
||||
#######################################
|
||||
|
||||
@@ -16,7 +16,8 @@ set -euo pipefail
|
||||
# 5. exporte les rôles PostgreSQL ;
|
||||
# 6. dump chaque base au format personnalisé PostgreSQL ;
|
||||
# 7. transfère chaque fichier vers le serveur distant ;
|
||||
# 8. envoie un bilan sur Discord :
|
||||
# 8. applique une rotation distante sur 10 jours ;
|
||||
# 9. envoie un bilan sur Discord :
|
||||
# - 1 message global si tout est OK ;
|
||||
# - en cas d’erreur partielle :
|
||||
# * USERS OK -> message simple ;
|
||||
@@ -67,6 +68,7 @@ read -r -a DBS_ARRAY <<< "$DBS"
|
||||
|
||||
IA_SSH="${BACKUP_REMOTE_USER}@${BACKUP_REMOTE_HOST}"
|
||||
IA_BASE_DIR="${BACKUP_REMOTE_DIR}"
|
||||
RETENTION_DAYS=10
|
||||
|
||||
SSH_OPTS=(
|
||||
-i "$SSH_KEY"
|
||||
@@ -299,6 +301,36 @@ done
|
||||
|
||||
set -e
|
||||
|
||||
#######################################
|
||||
# Rotation distante
|
||||
#######################################
|
||||
|
||||
log "Starting remote rotation: delete backups older than ${RETENTION_DAYS} days"
|
||||
|
||||
set +e
|
||||
|
||||
ssh "${SSH_OPTS[@]}" "$IA_SSH" "find '${REMOTE_DIR}/user' -type f -name 'user_*.dump' -mtime +${RETENTION_DAYS} -delete"
|
||||
RET=$?
|
||||
|
||||
if [[ $RET -ne 0 ]]; then
|
||||
log "ERROR: remote rotation failed for users"
|
||||
fi
|
||||
|
||||
for DB in "${DBS_ARRAY[@]}"; do
|
||||
ssh "${SSH_OPTS[@]}" "$IA_SSH" "find '${REMOTE_DIR}/${DB}' -type f -name '${DB}_*.dump' -mtime +${RETENTION_DAYS} -delete"
|
||||
RET=$?
|
||||
|
||||
if [[ $RET -ne 0 ]]; then
|
||||
log "ERROR: remote rotation failed for ${DB}"
|
||||
else
|
||||
log "Remote rotation OK for ${DB}"
|
||||
fi
|
||||
done
|
||||
|
||||
set -e
|
||||
|
||||
log "Remote rotation finished"
|
||||
|
||||
#######################################
|
||||
# Nettoyage local
|
||||
#######################################
|
||||
|
||||
Reference in New Issue
Block a user