Manutenção periódica do FreeBSD

Qualquer servidor precisa de manutenção periódica. Normalmente, os administradores de sistema confiam no comando cron(8).

Mas o FreeBSD já dispõe de uma infra-estrutura para manutenção periódica. Trata-se do comando periodic(8).

O ficheiro principal de configuração chama-se periodic.conf(5) e encontra-se no directório /etc; as opções por defeito deste ficheiro encontram-se no ficheiro /etc/defaults/periodic.conf. Além destes dois ficheiros, pode-se definir um terceiro (/etc/periodic.conf.local). As opções definidas no ficheiro periodic.conf tomam precedência às do /etc/defaults/periodic.conf e as do ficheiro /etc/periodic.conf.local tomam precedências sobre as do /etc/periodic.conf.O sistema vem já configurado para algumas das tarefas mais comuns de manutenção, tais como verificações de segurança, backups dos ficheiros principais de configuração (passwd(5), group(5), aliases(5) e pkgdb(1)), bem como relatórios do estados das partições, filas de mail, rede, etc. Estas são as tarefas de manutenção diárias. Existem também pré-configuradas tarefas de manutenção semanais e mensais.

Tudo isto depende de scripts que se encontram nos directórios daily, weekly e monthly, contidos no directório /etc/periodic. Embora um administrador de sistema possa acrescentar as suas próprias tarefas a estes directórios, isto não é aconselhável. Em vez disso, pode-se utilizar o directório /usr/local/etc/periodic. Dentro deste podem-se criar os mesmos directórios dailyweekly e monthly. Os scripts aqui contidos serão executados depois dos scripts principais do sistema.

Que uso se pode dar a esta infra-estrutura? Qualquer um que se deseje. Eu, por exemplo, defini uma tarefa diária que faz backups das bases de dados dos meus blogs e uma tarefa mensal que faz backup da minha base de dados de IP accounting.

O script que desenvolvi para o backup 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 estamos, no entanto, limitados a esperar que o comando periodic(8) seja invocado pelo cron(8). Pode-se, a qualquer momento, executar o comando periodic <directório> para executar os scripts contidos nos directórios /etc/periodic/<directório> e /usr/local/periodic/<directório>.

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 *