Re: Where did the diskusage increase?
Op maandag 10 oktober 2005 16:58, schreef John Plate:
> Hi
>
> I'm looking for a tool that can tell where diskusage has increased
> since last time the tool was run.
>
> Does such a tool exist?
>
> John
I tried to make such a tool for my own use as a bash script.
You must be root to run this script.
The script uses some other tools like du, gakw, .....
Most of them are present on a normal debian system.
Perhaps you must install the dialog pakket.
This script still has some bugs.
and the menu's are written in Dutch.......
and Dutch you will find in the the script code..........
good luck.
martin
---------------------snip under this line-----------------
#!/bin/bash
# this is a comment
kiesdir () {
#read -p "dit is in kiesdir"
dialog --clear \
--menu "kies een soort bestand" 0 0 0 \
"stand" "een bestand met een stand" \
"vergelijk" "een bestand met een vergelijking" 2> /tmp/dushell/antwkd
keus=`cat /tmp/dushell/antwkd`
if [ $keus = "stand" ]; then
dirkeus=$dirstand
else
dirkeus=$dirverg
fi
#read -p "$dirstand $dirverg $dirkeus"
}
toonlijst () {
oud=""
dir -x $1 > /tmp/dushell/lijst.tmp
if [ -s /tmp/dushell/lijst.tmp ]; then
tr ' ' '\012' < /tmp/dushell/lijst.tmp > /tmp/dushell/lijst.oud
mawk '$1 > "" { printf "%s . ", $1 }' /tmp/dushell/lijst.oud
>/tmp/dushell/lijst
lijst=`cat /tmp/dushell/lijst`
dialog --title "kies uit deze lijst" \
--menu "$2" 0 0 0 \
$lijst 2> /tmp/dushell/antwlijst
oud=`cat /tmp/dushell/antwlijst`
else
return
fi
}
maakaktueel() {
dialog --yesno "aktuele stand opbergen inclusief gemounte filesystems ?" 0 0
jn=$?
if [ $jn -eq "0" ]; then
optie=""
optietxt="_Y"
elif [ $jn -eq "1" ]; then
optie=-x
optietxt="_N"
else
return
fi
dialog --infobox "du doet nu zijn werk. even geduld a.u.b." 0 0
du $optie / > /tmp/dushell/dushell.tmp 2> /tmp/dushell/du-error
dialog --infobox "du is klaar. nu sorteren, even geduld a.u.b." 0 0
mawk '{printf "%s%8s\n", $2, $1 }' /tmp/dushell/dushell.tmp
> /tmp/dushell/dushell+$DATUM
sort < /tmp/dushell/dushell+$DATUM > $NIEUW$optietxt
cp $NIEUW$optietxt $dirstand
# VASTGELEGD="ja"
}
# ----------------------------------------------------------- einde funkties
if ! [ -d /tmp/dushell ]; then
mkdir /tmp/dushell
fi
if ! [ -d /var/dushell/stand ]; then
mkdir -p /var/dushell/stand
fi
if ! [ -d /var/dushell/verg ]; then
mkdir -p /var/dushell/verg
fi
dirstand=/var/dushell/stand
dirverg=/var/dushell/verg
date --date='now' +%Y-%m-%d_%T > /tmp/dushell/datum
DATUM=`cat /tmp/dushell/datum`
NIEUW="/tmp/dushell/dushell_"$DATUM
while [ 0 ]; do
#read -p "--- vlak voor het hoofdmenu ---"
oud=""
dialog --title "dushell H O O F D - M E N U" \
--clear \
--menu "Wat wil je doen ?" 0 0 0 \
"aktueel" "aktuele stand van de bestandsstruktuur vastleggen" \
"maak" "maak nieuwe vergelijking met eerder vastgelegde stand" \
"inzien" "inzien van een stand of vergelijking" \
"verwijder" "eerder vastgelegd bestand verwijderen" \
"naam" "eerder vastgelegd bestand een nieuwe naam geven" \
"help" "een korte uitleg over dit programma" \
"einde" " tot de volgende keer....." \
2> /tmp/dushell/antw1
if [ $? = 1 -o $? = 255 ]; then
break
fi
#while [ 0 ]; do
ANTWOORD=`cat /tmp/dushell/antw1`
if [ $ANTWOORD = "aktueel" ]; then
if [ -z $VASTGELEGD ]; then
maakaktueel
else
dialog --msgbox "dit was al gebeurd." 0 0
fi
elif [ $ANTWOORD = "maak" ]; then
toonlijst $dirstand "de OUDE stand voor de vergelijking"
if [ -z $VASTGELEGD ]; then
maakaktueel
fi
dialog --infobox "index klaarzetten, even geduld a.u.b." 0 0
mawk '{print $1 }' $NIEUW$optietxt > /tmp/dushell/dushell+nieuw
mawk '{print $1 }' $dirstand/$oud > /tmp/dushell/dushell+oud
sort -mu /tmp/dushell/dushell+oud /tmp/dushell/dushell+nieuw
> /tmp/dushell/index
index=`cat /tmp/dushell/index`
vorig=`cat $dirstand/$oud`
wissel=0
teller=0
for tekst in $vorig
do
#echo $tekst
#read
if [ $wissel -eq "0" ]; then
wissel=1
teller=`expr $teller + 1`
vorigindex[teller]=$tekst
else
wissel=0
vorigwaarde[teller]=$tekst
fi
done
#read -p "echo ${vorigindex[5]} ${vorigwaarde[5]}"
nieuw=`cat $NIEUW$optietxt`
read -p "optie: $optietxt"
wissel=0
teller=0
for tekst in $nieuw
do
if [ $wissel -eq "0" ]; then
wissel=1
teller=`expr $teller + 1`
nieuwindex[teller]=$tekst
else
wissel=0
nieuwwaarde[teller]=$tekst
fi
done
clear
aantaldirs=`wc -w /tmp/dushell/index|cut -b 1-7`
#echo "$aantaldirs"
#teller=900
#echo "$(($teller * 100 / $aantaldirs))"
#read -p "aantaldirs = $aantaldirs"
echo -n "" > /tmp/dushell/oud+nieuw
teller=0
teller2=0
nro=1
nrn=1
for dirnaam in $index
do
oudveld=0
nieuwveld=0
if [ "$dirnaam" = ${vorigindex[nro]} ]; then
oudveld=${vorigwaarde[nro]}
nro=`expr $nro + 1`
fi
if [ "$dirnaam" = ${nieuwindex[nrn]} ]; then
nieuwveld=${nieuwwaarde[nrn]}
nrn=`expr $nrn + 1`
fi
meer="0"
minder="0"
if [ `expr $oudveld` -lt `expr $nieuwveld` ]; then
meer=`expr $nieuwveld - $oudveld`
elif [ `expr $oudveld` -gt `expr $nieuwveld` ]; then
minder=`expr $oudveld - $nieuwveld`
fi
echo -e "$oudveld\t$nieuwveld\t$meer\t$minder\t$dirnaam"
>> /tmp/dushell/oud+nieuw
#read
teller=`expr $teller + 1`
procent=$(($teller * 100 / $aantaldirs))
if [ `expr $procent` -gt `expr $teller2` ]; then
# echo -e "$(($teller * 100 / $aantaldirs)) \n" > /tmp/dushell/procent
echo -e "$procent \n" > /tmp/dushell/procent
teller2=`expr $procent + 5`
dialog --guage "vergelijking opbouwen, even geduld a.u.b." 0 0 0
< /tmp/dushell/procent
fi
done
mawk '{ printf "%8s%8s%8s%8s %s\n", $1, $2, $3, $4,
$5 }' /tmp/dushell/oud+nieuw > /tmp/dushell/oud+nieuw.tmp
read -p "optie=$optietxt oud=$oud"
read -p " /tmp/dushell/oud+nieuw.tmp $dirverg/vergelijk_$DATUM"
read -p " /tmp/dushell/oud+nieuw.tmp $dirverg/vergelijk_$DATUM$optietxt"
read -p " /tmp/dushell/oud+nieuw.tmp $dirverg/vergelijk_$DATUM$optietxt.$oud"
# cp /tmp/dushell/oud+nieuw.tmp $dirverg/vergelijk_$DATUM$optietxt.$oud
cp /tmp/dushell/oud+nieuw.tmp $dirverg/$oud.vergelijk_$DATUM$optietxt
# mv /tmp/dushell/oud+nieuw.tmp $dirverg/vergelijk_$DATUM
dialog --textbox $dirverg/$oud.vergelijk_$DATUM$optietxt 0 0
elif [ $ANTWOORD = "inzien" ]; then
dirdiep=1
dirsel=/
kiesdir
toonlijst $dirkeus "een bestand om in te zien"
if [ -n $oud ]; then
if [ $dirkeus = $dirverg ]; then
cp $dirverg/$oud /tmp/dushell/inzien.tmp
echo " oud nieuw meer minder directory" > /tmp/dushell/klaar
echo " ------- ------- ------- ------- ---------" >> /tmp/dushell/klaar
else
mawk '{printf "%8s %s\n", $2, $1 }' $dirstand/$oud
> /tmp/dushell/inzien.tmp
echo " stand directory" > /tmp/dushell/klaar
echo " ------- ---------" >> /tmp/dushell/klaar
fi
while [ 0 ]; do
cp /tmp/dushell/klaar /tmp/dushell/inzien.klaar
dialog --title "I N Z I E N" \
--menu "$oud\n directory diepte: \
$dirdiep\n directory selectie: $dirsel" 0 0 0 \
"vol" "het volledige overzicht" \
"plus" "overzicht van de vermeerderingen" \
"min" "overzicht van de verminderingen" \
"diepte" "directory diepte instellen" \
"selectie" "directory selectie instellen" \
"ruimte" "overzicht van de schijfruimte" \
"einde" " tot de volgende keer....." \
2> /tmp/dushell/antwinzien
if [ $? = 1 -o $? = 255 ]; then
break
fi
inzien=`cat /tmp/dushell/antwinzien`
if [ $inzien = "vol" ]; then
cp /tmp/dushell/inzien.tmp /tmp/dushell/inzien.X
elif [ $inzien = "plus" ]; then
mawk '$3 > 0' /tmp/dushell/inzien.tmp > /tmp/dushell/inzien.X
elif [ $inzien = "min" ]; then
mawk '$4 > 0' /tmp/dushell/inzien.tmp > /tmp/dushell/inzien.X
elif [ $inzien = "diepte" ]; then
dialog --inputbox "de diepte <$dirdiep> wijzigen in:" \
0 0 $dirdiep 2> /tmp/dushell/dirdiep
dirdiep=`cat /tmp/dushell/dirdiep`
continue
elif [ $inzien = "selectie" ]; then
dialog --inputbox "de selectie <$dirsel> wijzigen in:" \
0 0 $dirsel 2> /tmp/dushell/dirsel
dirsel=`cat /tmp/dushell/dirsel`
continue
elif [ $inzien = "ruimte" ]; then
df > /tmp/dushell/inzien.df
dialog --textbox /tmp/dushell/inzien.df 0 0
continue
elif [ $inzien = "einde" ]; then
break
fi
egrep $dirsel /tmp/dushell/inzien.X > /tmp/dushell/inzien.XX
if [ $dirdiep = "1" ]; then
mawk -F "/" 'NF == 2' /tmp/dushell/inzien.XX >> /tmp/dushell/inzien.klaar
elif [ $dirdiep = "2" ]; then
mawk -F "/" 'NF == 3' /tmp/dushell/inzien.XX >> /tmp/dushell/inzien.klaar
elif [ $dirdiep = "3" ]; then
mawk -F "/" 'NF == 4' /tmp/dushell/inzien.XX >> /tmp/dushell/inzien.klaar
elif [ $dirdiep = "4" ]; then
mawk -F "/" 'NF == 5' /tmp/dushell/inzien.XX >> /tmp/dushell/inzien.klaar
elif [ $dirdiep = "5" ]; then
mawk -F "/" 'NF == 6' /tmp/dushell/inzien.XX >> /tmp/dushell/inzien.klaar
elif [ $dirdiep = "6" ]; then
mawk -F "/" 'NF == 7' /tmp/dushell/inzien.XX >> /tmp/dushell/inzien.klaar
elif [ $dirdiep = "7" ]; then
mawk -F "/" 'NF == 8' /tmp/dushell/inzien.XX >> /tmp/dushell/inzien.klaar
elif [ $dirdiep = "8" ]; then
mawk -F "/" 'NF == 9' /tmp/dushell/inzien.XX >> /tmp/dushell/inzien.klaar
elif [ $dirdiep = "9" ]; then
mawk -F "/" 'NF == 10' /tmp/dushell/inzien.XX >> /tmp/dushell/inzien.klaar
else
mawk -F "/" 'NF > 0' /tmp/dushell/inzien.XX >> /tmp/dushell/inzien.klaar
fi
dialog --textbox /tmp/dushell/inzien.klaar 0 0
done
fi
elif [ $ANTWOORD = "verwijder" ]; then
kiesdir
toonlijst $dirkeus "een bestand om te verwijderen"
if [ -n $oud ]; then
dialog --yesno "<$oud> verwijderen" 0 0
jn=$?
if [ $jn -eq "0" ]; then
rm $dirkeus/$oud
fi
fi
elif [ $ANTWOORD = "naam" ]; then
kiesdir
toonlijst $dirkeus "een bestand om de naam van te wijzigen"
if [ -n $oud ]; then
dialog --inputbox "geef <$oud> een nieuwe naam:" \
0 0 $oud 2> /tmp/dushell/antwnaam
nieuwenaam=`cat /tmp/dushell/antwnaam|tr " " "_"`
if [ -n $nieuwenaam ]; then
if [ $nieuwenaam != $oud ]; then
mv $dirkeus/$oud $dirkeus/$nieuwenaam
fi
fi
fi
elif [ $ANTWOORD = "help" ]; then
clear
cat << EOF
HALLO,
Dit is de korte helptekst bij dushell.
Hij is nu nog wel heeeeeel errug kort.
EOF
read -p "geef <ENTER> voor vervolg...." blabla
elif [ $ANTWOORD = "einde" ]; then
rm /tmp/dushell/*
break
fi
done
# i love comments
Reply to: