Ubuntu script per eliminare vecchi file

Script per eliminare vecchi file con script bash ubuntu

Avendo un server per registrare dalle telecamere tramite il software motion si è posto il problema di mantenere dello spazio libero sugli hard disk del server.
La soluzione più logica mi è sembrata quella di mantenere libero sempre almeno 1GB di memoria.

Online si trovano diversi script, ma ognuno presenta delle debolezze/BUG, così mi son deciso di scriverlo da zero.

Lo script scritto va a leggere tutti i file presenti nelle directory e subdirectory, li ordina per data di creazione e li elimina uno ad uno finché non c’è almeno 1GB di spazio libero sul disco. Una volta raggiunta la quota minima si preoccupa di eliminare le cartelle vuote, per non lasciare spazzatura.

Di seguito il codice:

#!/bin/bash

DIR=/home/mattia/video/

FREESPACE=1000000

find $DIR -type f -printf "%T@|%p\n" | sort -n | while read f ; do
  if [ `df --output=avail $DIR | tail -1` -ge $FREESPACE ] ; then
    break
  fi
    filename="$(cut -d'|' -f2 <<<"$f")"
    rm -f $filename
done

find . -depth -type d -empty -exec rmdir {} \;

Il file è scritto in bash ed è molto semplice. Nella variabile DIR viene definita la directory da tenere pulita, mentre nella variabile FREESPACE lo spazio minimo da avere libero sul disco.

Tale script è stato poi inserito in esecuzione con crontab affinché venga eseguito ogni minuto

Più sono i file più lo script ha bisogno di memoria, in particolare dovete assicurarvi di avere spazio a sufficienza nella directory /tmp/. Personalmente tale directory per velocità e risparmiare scritture su disco è sta impostata che venga montata in RAM all'avvio del sistema tramite fstab

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.