Script per mantenir espai lliure en un servidor amb Mldonkey

Tenim un servidor amb el Mldonkey, amb un disc dur dedicat a guardar les descarregues. Cada 3-4 dies haviem de borrar manualment fitxers per alliberar espai. He fet un petit script amb perl que fa la feina per mi, pot ser útil per algú. En l'script només s'ha de definir la carpeta on hi ha els fitxers a borrar ($path) i l'espai mínim que volem tenir lliure al disc dur ($min_free):

#!/usr/bin/perl

use File::stat;
use Filesys::DiskSpace;

my $path = "/dades/files";
my $min_free=2*1024*1024; # 2 GBytes lliure

opendir(DIRHANDLE, $path) || die;
# Posa nom fitxer i mida en dos hash amb la data com a key
foreach $name (readdir(DIRHANDLE)) {
        my $fs=stat($path.$name);
        my $ftime=$fs->mtime;
        my $fls{"$ftime"}=$fs->size;
        my $fln{"$ftime"}=$name;
}
closedir(DIRHANDLE);

foreach my $key (sort keys %fls){  # Ordena fitxers per antiguitat
        # Comprova espai lliure ...
        my ($fs_type, $fs_desc, $used, $avail, $fused, $favail) = df $path;
        if($avail>$min_free){ last; }
        # ... si falta, esborra. Abans comprova que no sigui "." o ".."
        if( $fln{"$key"}!~/^\.$/ && $fln{"$key"}!~/^\.\.$/ ) {
                unlink($path.$fln{"$key"});
        }
}

 

En el meu cas tinc muntat un dic dur com a “/dades”, i tinc configurat el Mldonkey perque guardi els fitxers descarregats a “/dades/files”, els temporals tambe, de fet corre integrament en aquest disc dur. Aquest script es crida desde el crontab cada mitja hora. El que fa es comprovar l'espai lliure al disk, i en cas de que n'hi hagi menys del definit a $min_free, comença a borrar els fitxers mes vells fins que el disk te el mínim d'espai definit.

Recordeu que l'script a de correr sota un usuari que tingui permisos per a borrar fitxers en aquell directori.

pàgina generada en: 0.459 segons.