venerdì 1 agosto 2008

Cancellare i file piu' vecchi di una determinata data

Molto spesso gli utenti che utilizzano degli spazi condivisi pubblici su dei server si scordano di cancellare i file che non servono piu', lasciando quindi intasato il server stesso e consumando spazio che altri utenti potrebbero usare. Quando lo spazio server pubblico viene usato come pura area di scambio, è possibile impostare un job con cron che cancelli i file e le cartelle più vecchie di un certo numero di giorni (e quindi presumibilmente non piu' utili). Il seguente script si basa su find e su xargs e cancella i file piu' vecchi del numero di giorni specificato come parametro.

#!/bin/bash

# Programma per cancellare file e directory piu' vecchi di un tot. di giorni.
# $1 = directory radice dalla quale partire
# $2 = numero di giorni per la vecchiaia (di default 180)

SOURCE_DIR=$1
AGE=180
FIND_CMD=`which find`
RM_CMD=`which rm`
RM_OPTS="-f"
XARGS_CMD=`which xargs`
XARGS_OPTS="-0"

if [ $# -ge 2 ]
then
AGE=$2
fi


# controllo parametri
if [ ! -d $SOURCE_DIR ]
then
echo "Il percorso specificato $SOURCE_DIR non punta ad una directory"
exit 1
fi

AGE=`expr $AGE + 0`
if [ $? -ne 0 ]
then
echo "L'anzianita' dei file (in giorni) non e' un numero ma $AGE"
exit 2
fi



# effettuo la pulizia
AGE="+$AGE"
$FIND_CMD "$SOURCE_DIR" -xdev -mtime $AGE -type f -print0 | $XARGS_CMD $XARGS_OPTS $RM_CMD $RM_OPTS
echo "Fatto <$?>"

Nessun commento: