Site icon sitesolution.it

Ubuntu script per eliminare vecchi file

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

# Cartella
DIR=/video/hd

# Quantita spazio da tenere libero(100GB)
FREESPACE=100000000

# Rimuovo file vuoti/corrotti
find $DIR -size 0 -delete 

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 



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

Exit mobile version