====== 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