]> git.stg.codes - stg.git/blob - stargazer/scripts/clean_db
Public interfaces: part 4
[stg.git] / stargazer / scripts / clean_db
1 #!/bin/bash
2
3 # Этот скрипт производит очистку файловой БД stargazer-а.
4 # Его можно вызывать вручную или покрону, к примеру раз в неделю или раз в месяц.
5
6
7 # Эта переменная задает сколько месяцев детальной статистики оставить в БД
8 SAVE_MONTHS=3
9
10 # Эта переменная задает сколько строк оставить в логах юзеров
11 MAX_LOG_LINES=5000
12
13 # Тут определяется путь к БД
14 DB=/var/stargazer/
15
16
17
18
19 declare -i NOW=`date +%s`
20 declare -i DT=SAVE_MONTHS*31*24*3600
21 declare -i stat_time=0
22
23 for usr in $DB/users/*
24 do
25     echo cleaning `basename $usr`
26     for ys in $usr/detail_stat/*
27     do
28         year=`basename $ys`
29         
30         for ms in $ys/*
31         do
32             month=`basename $ms`
33             stat_time=`date --date="$year/$month/01" +%s`           
34             
35             if (( $NOW - $stat_time > $DT ))
36             then
37                 rm -fr $ms
38             fi
39         done
40     done
41     tail -n $MAX_LOG_LINES $usr/log > /tmp/stg_usr_log.`basename $usr`
42     mv -f /tmp/stg_usr_log.`basename $usr` $usr/log
43 done
44