diff --git a/cleanup-tmp-uploads.sh b/cleanup-tmp-uploads.sh new file mode 100755 index 0000000..d6bf916 --- /dev/null +++ b/cleanup-tmp-uploads.sh @@ -0,0 +1,44 @@ +#!/bin/sh + + +# Explications : +# Ce script sert à nettoyer des uploads temporaires. Par ex: +# /var/www/html/tmp/suppr-1j-ss-lect/toto/tata.txt +# En lançant "ce-script.sh /var/www/html/tmp" régulièrement, +# toute l'arborescence suppr-1j-ss-lect/toto/tata.txt (dont +# le premier répertoire) sera supprimée si tata.txt n'a pas été +# consulté pendant ~24h. + +# Arrêt à la première erreur non-gérée +set -e + +while [ "$#" -ge 1 ]; do + # Suppression N jours sans modification + for i in "$1"/suppr-*j-ss-modif; do + DUREE="$( echo "$i" | sed -n 's/.*suppr-\([0-9]\+\)j-ss-modif/\1/p' )" + # Sans répertoire de ce type, DUREE sera vide + if [ -n "$DUREE" ]; then + # suppression des vieux fichiers + find "$i" -xdev -mindepth 1 -not -type d -mtime "+$DUREE" -delete + # suppression des répertoires vides + # (on ajoute -mmin +60 pour éviter une race condition avec une création en cours) + find "$i" -xdev -mindepth 1 -type d -mmin +60 -empty -delete + fi + done + + # Suppression N jours sans lecture + for i in "$1"/suppr-*j-ss-lect; do + DUREE="$( echo "$i" | sed -n 's/.*suppr-\([0-9]\+\)j-ss-lect/\1/p' )" + # Sans répertoire de ce type, DUREE sera vide + if [ -n "$DUREE" ]; then + # suppression des vieux fichiers + find "$i" -xdev -mindepth 1 -not -type d -atime "+$DUREE" -delete + # suppression des répertoires vides + # (on ajoute -mmin +60 pour éviter une race condition avec une création en cours) + find "$i" -xdev -mindepth 1 -type d -mmin +60 -empty -delete + fi + done + + # Argument/Répertoire suivant + shift +done