Manutenção periódica do FreeBSD

Qual­quer servi­dor pre­cisa de manutenção per­iódi­ca. Nor­mal­mente, os admin­istradores de sis­tema con­fi­am no coman­do cron(8).

Mas o FreeB­SD já dis­põe de uma infra-estru­tu­ra para manutenção per­iódi­ca. Tra­ta-se do coman­do periodic(8).

O ficheiro prin­ci­pal de con­fig­u­ração chama-se periodic.conf(5) e encon­tra-se no direc­tório /etc; as opções por defeito deste ficheiro encon­tram-se no ficheiro /etc/defaults/periodic.conf. Além destes dois ficheiros, pode-se definir um ter­ceiro (/etc/periodic.conf.local). As opções definidas no ficheiro periodic.conf tomam pre­cedên­cia às do /etc/defaults/periodic.conf e as do ficheiro /etc/periodic.conf.local tomam pre­cedên­cias sobre as do /etc/periodic.conf.O sis­tema vem já con­fig­u­ra­do para algu­mas das tare­fas mais comuns de manutenção, tais como ver­i­fi­cações de segu­rança, back­ups dos ficheiros prin­ci­pais de con­fig­u­ração (passwd(5), group(5), aliases(5) e pkgdb(1)), bem como relatórios do esta­dos das par­tições, filas de mail, rede, etc. Estas são as tare­fas de manutenção diárias. Exis­tem tam­bém pré-con­fig­u­radas tare­fas de manutenção sem­anais e men­sais.

Tudo isto depende de scripts que se encon­tram nos direc­tórios dai­ly, week­ly e month­ly, con­ti­dos no direc­tório /etc/periodic. Emb­o­ra um admin­istrador de sis­tema pos­sa acres­cen­tar as suas próprias tare­fas a estes direc­tórios, isto não é acon­sel­háv­el. Em vez dis­so, pode-se uti­lizar o direc­tório /usr/local/etc/periodic. Den­tro deste podem-se cri­ar os mes­mos direc­tórios dai­lyweek­ly e month­ly. Os scripts aqui con­ti­dos serão exe­cu­ta­dos depois dos scripts prin­ci­pais do sis­tema.

Que uso se pode dar a esta infra-estru­tu­ra? Qual­quer um que se dese­je. Eu, por exem­p­lo, defi­ni uma tare­fa diária que faz back­ups das bases de dados dos meus blogs e uma tare­fa men­sal que faz back­up da min­ha base de dados de IP account­ing.

O script que desen­volvi para o back­up diário das bases de dados é:

#!/bin/sh
#
# If there is a global system configuration file, suck it in.
if [ -r /etc/defaults/periodic.conf ]
then
 . /etc/defaults/periodic.conf
 source_periodic_confs
fi
case "$daily_mysql_backup_enable" in
  [Yy][Ee][Ss])
    echo
    echo -n 'Backing up MySQL databases: '
    backup_file_name=${mysql_backup_dir}/mysql_backup-`date +%Y%m%d`.sql
    for i in ${daily_mysql_backup_ignore_tables}; do
      ignore_tables="${ignore_tables} --ignore-table=$i"
    done
    touch ${backup_file_name}
    for i in ${daily_mysql_backup_databases}; do
      echo -n "$i "
      /usr/local/bin/mysqldump --skip-quick --force --single-transaction -uroot \
        -ppassword ${ignore_tables} --databases $i >> ${backup_file_name}
    done
    /usr/local/bin/mysqldump --skip-quick --force --single-transaction -uroot \
        -ppassword pmacct traffic_by_month >> ${backup_file_name}
    echo
    mdrc=$?
    /usr/bin/bzip2 -9 ${backup_file_name}
    bzrc=$?
    if [ mdrc=0 -a bzrc=0 ]; then
      rc=0
    else
      rc=1
    fi
  ;;
  *) rc=0;;
esac
exit $rc

Não esta­mos, no entan­to, lim­i­ta­dos a esper­ar que o coman­do periodic(8) seja invo­ca­do pelo cron(8). Pode-se, a qual­quer momen­to, exe­cu­tar o coman­do peri­od­ic para exe­cu­tar os scripts con­ti­dos nos direc­tórios /etc/periodic/ e /usr/local/periodic/.

Esta entrada foi publicada em Administração, FreeBSD. ligação permanente.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *