úterý 27. ledna 2009

Čištění disku v Linuxu podle času

Občas se hodí nechat automaticky hlídat některé adresáře a mazat v nich soubory, aby se zbytečně neplnily. Určitě pro to existují velmi sofistikované způsoby, ale svému účelu určitě poslouží a někomu by se mohl hodit například následující skript, který jsme před mnoha lety začali používat na jednom stále se plnícím serveru.

Co potřebujeme
  • představu o tom kde chceme mazat
  • představu o tom co chceme mazat
  • soubor s popisem míst a časů
  • vlastní skript
  • uložení příkazu do crontabu
Soubor s definicí mazání
Do souboru, který nazveme např. cisteni.dir uložíme na každý řádek informace ve tvaru pocet_dni|cesta např. pro mazání adresáře tmp po 20 a adresáře 0 v home uživatele nekdo po 10 dnech:

20/tmp
10/home/nekdo/0

apod.

Skript mazání
Tento soubor nazvaný cisteni.sh uložíme na stejné místo jako cisteni.dir. Je poměrně jednoduchý a nepředpokládá potřebu logovat.

#!/bin/bash

for POLE in `cat ./cisteni.dir`
do
CAS=`echo $POLE|cut -c1-2`
CESTA=`echo $POLE|cut -c3-`
/usr/bin/find $CESTA -atime'+'$CAS -exec rm -R {} \;
done

Teď už jen stačí přidat do crontabu řádek se spouštěním skriptu. Například pro spouštění každý den v 10 hodin:
* 10 * * * cesta_k_souboru/cisteni.sh

Žádné komentáře:

Okomentovat