====== Cancellare vecchi directory di backup automaticamente ======
Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **//24/12/2009//** \\ \\
Puo' capitare di avere script di backup che fanno copie di directory periodicamente generando delle directory con i seguenti nomi:
**ls -l**
drwxr-xr-x 15 1002 1001 4096 1 dic 03:20 20091201
drwxr-xr-x 15 1002 1001 4096 2 dic 03:20 20091202
drwxr-xr-x 15 1002 1001 4096 3 dic 03:21 20091203
drwxr-xr-x 15 1002 1001 4096 4 dic 03:20 20091204
drwxr-xr-x 15 1002 1001 4096 5 dic 03:20 20091205
drwxr-xr-x 15 1002 1001 4096 6 dic 03:20 20091206
drwxr-xr-x 15 1002 1001 4096 7 dic 03:19 20091207
drwxr-xr-x 15 1002 1001 4096 8 dic 03:19 20091208
drwxr-xr-x 15 1002 1001 4096 9 dic 03:19 20091209
drwxr-xr-x 15 1002 1001 4096 10 dic 03:20 20091210
drwxr-xr-x 15 1002 1001 4096 11 dic 03:26 20091211
drwxr-xr-x 15 1002 1001 4096 12 dic 03:20 20091212
drwxr-xr-x 15 1002 1001 4096 13 dic 03:20 20091213
drwxr-xr-x 15 1002 1001 4096 14 dic 03:19 20091214
drwxr-xr-x 15 1002 1001 4096 15 dic 03:20 20091215
drwxr-xr-x 15 1002 1001 4096 16 dic 03:20 20091216
drwxr-xr-x 15 1002 1001 4096 17 dic 03:21 20091217
Puo' essere utile per queste situazioni cancellare le ''n'' directory piu' vecchie. Ovviamente e' possibile automatizzare il tutto con il seguente script:
#!/bin/bash
# -- Modificare in base alle proprie esigenze ---------------
#Numero backup da conservare
nbackup=3
#directory dei backup
directory="/home/fabio/Documenti/progetti/autoremove/test"
# -----------------------------------------------------------
oggi=`date +%Y%m%d`
lock=`cat /var/lock/autoremove-backup-protocollo.lock 2> /dev/null`
if [ "$lock" = "$oggi" ];then
echo "Impossibile lanciare lo script . E' gia' stato avviato oggi."
exit 1 ;
fi
echo $oggi > /var/lock/autoremove-backup-protocollo.lock
cd $directory
#Se rimangono n directory di backup soltanto non eseguo lo script
countdir=`ls | wc -l`
if [ "$countdir" -le "$nbackup" ];then
echo "E' stato raggiunto il limite massimo di cancellazioni."
exit 1
fi
for riga in `ls -1 |sort |head -n $nbackup`; do
countdir=`ls | wc -l`
if [ "$countdir" -gt "$nbackup" ];then
echo "Cancello directory -> $riga"
rm -fR $riga
fi
done