Monitoring velikosti adresáře (zálohy)
Úvodem
Script má široké využití a může mít různé podoby.Vznikl za účelem hlídání velikosti adresáře (lvm jednotky velikosti 120Gb), do kterého si virtuální mašiny samy pře NFS provádí své zálohy jakéhokoliv typu.
Tento adresář je ručně (scriptem přes rsync) kopírován na externí disk omezené velikosti (75Gb). Tento disk je plně offline a připojuje se externě pře USB jendou za čas (cca. 1x týdně).
Jedná se o zálohu dat, která umožní i pří 'výbuchu' počítače uvést vše do původního (zálohovaného) stavu.
Data, jak už to bývá, rostou i když nemusí, a tento script upozorní včas, že je třeba prověřit velikost zálohy, či pořídit větší disk.
Script se spouští v čase, kdy jsou zálohy všech strojů již provedeny (optimisticky určeno 2hodiny po spuštění poslední zálohy, která trvá většinou 15min).
Script může mít větší režii v závislosti na adresářové struktuře a počtu souborů.
Zjištění velikosti a notifikace e-mailem
Tento script zjistí velikost a v případě, že velikost překročila nastavenou mez, pošle podrobné hlášení, na e-maily.Mail obsahuje:
- celkovou velikost hlídaného adresáře
- jednotlivé velikosti 1. adresářů
- jednotlivé velikosti adresářů jejich podadresářu a jejich podadresářů
Na běžném systému se není třeba obávat opakovaného zatížení příkazem 'du' při procházení struktury adresářů, většinou to vše zůstává v cache.
#!/bin/bash ADMIN="jmeno@domena.primarni jmeno@domena.zalozni" HOSTNAME=`/bin/hostname` FROM="sizemonitor@$HOSTNAME" #maximum allowed size in megabytes MAXSIZEMB=65000 #checked dir name CHECKDIR="/check/directory/" set -- `du -sm "$CHECKDIR"` size=$1 if [ $size -gt $MAXSIZEMB ]; then TOTAL=`du -sh "$CHECKDIR"` DETAIL=`du -h --max-depth=1 "$CHECKDIR"` DETAIL2=`du -h --max-depth=3 "$CHECKDIR"` echo -e "WARNING: size of backup is too big on ${HOSTNAME}\n\n${TOTAL}\n\n${DETAIL}\n\n${DETAIL2}\n" | /usr/bin/mailx \ -s "WARNING sizeof backup is too big on: ${HOSTNAME}" -r ${FROM} ${ADMIN} logger -p warning "WARNING: size of backup is greather then ${MAXSIZEMB}Mb (size is: ${size}Mb)" echo "Size of backups is too big, e-mail has been sent" else echo "Size of backups is OK" fi exit 0
ADMIN udává kam se má poslat chybové hlášení
FROM je pole from v odeslaném emailu
MAXSIZEMB maximální možná velikost adresáře v megabajtech
CHECKDIR kontrolovaný adresář
Předpokládá se, že 'du' umožňuje parametr -h (lidsky čitelná velikost s koncovkou Mb Gb apod.)
Script odešle email pomocí
/usr/bin/mailxpřípadně opravit na
/usr/bin/mailči jinou cestu, pak zapíše do logu hlášení.
Posílá hlášení i na stdout - okamžitá informace při ručním spuštění.
Scipt nekontroluje provedení příkazů 'du' či 'mailx' - selhání scriptu není kritické :).
Naplánování pravidelné kontroly
Pomocí příkazu (na roota)crontab -evložíme řádek pro kontrolu 1x denně v 6:10
10 6 * * * /moje/cesta/checksizeofbackup > /dev/nullpřípadně jiným zápisem nebo zápisy.
Kdo nezná příkazi 'vi' editoru, tak ať se základní naučí :)
- i - aktivuje vkládací mód, lze psát či vkládat (nebo klávesa insert, POZOR stisknout jen 1×)
- Klávesa Esc - ukončí editační mód a přepne do příkazového
- :w - zapíše soubor (v příkazovém módu, předem stiskni klávesu Esc)
- :q - exit - ale jen pokud je soubor zapsaný či nezměněný (v příkazovém módu)
- :q! - exit BEZ uložení změn (v příkazovém módu)
- :wq - uloží soubor a exit (v příkazovém módu)
- Pokud nefungují šipky, tak v příkazovém módu
- k - 1× nahoru
- j - 1× dolů
- h - 1× vlevo
- l - 1× vpravo ( malé eℓ )
- :set nowrap - příjemný příkaz při zobrazení například logů
- :set background=dark - příjemný příkaz při práci na tmavém pozadí (např. přes putty)
- základní příkazy
Indikuje to obvykle výpisem 'crontab: installing new crontab'
Zdroje informací:
- man du
- man crontab
- man logger
- Wikipedia Cron
- Wikipedia vi editor - česky
- Bash manual