Outils pour utilisateurs

Outils du site


tech:purge_keep_only_last_recent

Ceci est une ancienne révision du document !


Script effacer plusieurs fichiers, sauf les n derniers

Voir aussi logrotate

script

purge_keep_only_last_recent.sh
#! /bin/bash
set -o nounset
 
# Parametres
CHEMIN=~/backup/
 
# ADD 1; If KEEP_LAST=5 => Only 4 will be kept
KEEP_LAST=10
 
purge() {
        local FICHIER=$1
 
        NEWER_THAN=$(ls -1t $CHEMIN/$FICHIER |sed -ne "${KEEP_LAST}p")
 
        if [[ ! -z "$NEWER_THAN" ]]
        then
                find $CHEMIN -depth -maxdepth 1 -type f -not -newer $(ls -1t $CHEMIN/$FICHIER |sed -ne "${KEEP_LAST}p") -name "$FICHIER" -delete
        fi
}
 
 
purge 'information_schema-*.sql.gz'
purge 'mysql-*.sql.gz'
purge 'performance_schema-*.sql.gz'
purge 'zabbix-*.sql.gz'

Notes sur "-delete" de find

-delete Effacer les fichiers, et renvoyer vrai si l'effacement a réussi. Si l'effacement échoue, un message d'erreur est envoyé. Si -delete échoue, le statut de sortie de find sera différent de zéro (si jamais il s'interrompt). L'utilisation de l'action -delete active automatiquement l'option -depth.

Attention : N'oubliez pas que la ligne de commande de find est évaluée comme une expression. Écrire -delete en premier forcera find à essayer d'effacer tout ce qui se trouve dans les points de départ que vous avez indiqué. Lorsque vous testez une ligne de commande de find qui utilisera -delete, vous devriez préciser l'option -depth afin d'éviter les sur‐ prises plus tard. Puisque -delete entraîne -depth, vous ne pouvez pas utiliser en même temps -prune et -delete.

Source : man find

tech/purge_keep_only_last_recent.1742825205.txt.gz · Dernière modification : de 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki