Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: Slackware 12.1
Por neutronbg
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Scripts

Linux user

Publicado por Thiago Henrique de Lima em (última atualização em 29/11/2011)   [ 1630 hits ]

Login: THenrique, 2104 pontos

Homepage: www.thiagohenrique.com.br   


Descrição

Ao criarem suas rotinas de backup de bases de dados, é comum que administradores de sistemas gerem  arquivos de backup da base inteira.

Quando a base de dados é pequena, isto não costuma ser um problema, já que teremos um arquivo pequeno de onde é fácil extrair dados específicos. Porém, quando a base de dados cresce e necessitamos extrair dados específicos de uma tabela deste aquivo, por exemplo, isto se torna um problema.

Para resolver este tipo de problema, recentemente procurei na internet um script de backup que fizesse backup de PostGreSQL por tabelas, e não do banco como um todo… e não achei!

Ao executá-lo, ele irá criar um diretório cujo nome será a data de execução no formato YYYYMMDD dentro do diretório de destino dos backups. Dentro deste diretório, ele irá criar outro diretório para cada base de dados existente no servidor, sendo que o nome destes diretórios serão o nome das bases as quais corresponderem. Dentro deste diretório, ele irá gerar um arquivo chamado schema.sql.gz, cujo conteúdo será a estrutura do banco, e também irá gerar outros arquivo “.sql.gz” que conterão o backup dos dados de cada tabela do banco. Estes últimos serão nomeados com o nome da tabela do qual armazenam o backup.

[ Download: pg_backup.sh ]   [ Enviar nova versão ]

[ Esconder código-fonte ]

#!/bin/bash
# Autor: Thiago Henrique
# Email: contato(at)thiagohenrique.com.br
# Data de criação: 24/08/2011
#
# Para que o script funcione corretamente, é necessário que o usuário que o executar possua o arquivo ~/.pgpass.
# Para configurar este arquivo, siga este tutorial: http://wiki.postgresql.org/wiki/Pgpass
#

BACKUP_DIR="/backup/`date +%Y%m%d`"
HOST="127.0.0.1";
USER="postgres";
LIST_DATABASES="SELECT datname from pg_database"
LIST_TABLES="SELECT tablename FROM pg_tables WHERE schemaname='public'"
PERMISSAO_BACKUP='644';

function backup()
{
   DATABASES=`psql -h ${HOST} -U ${USER} -q -t --command="${LIST_DATABASES}"`;
   for I in ${DATABASES}
   do
      export PGDATABASE="${I}";
      DIR="${BACKUP_DIR}/${PGDATABASE}";
      /bin/mkdir -p -m ${PERMISSAO_BACKUP} ${DIR};
      /usr/bin/pg_dump -h ${HOST} -U ${USER} --schema-only > ${DIR}/schema.sql;
      /bin/gzip -f ${DIR}/schema.sql;

      TABLES=`/usr/bin/psql -h ${HOST} -U ${USER} -q -t --command="${LIST_TABLES}"`;

      for I in ${TABLES}
      do
         /usr/bin/pg_dump -h ${HOST} -U ${USER} -t ${I} --data-only > ${DIR}/${I}.sql;
         /bin/gzip -f ${DIR}/${I}.sql;
      done
   done
}

Scripts recomendados
   Script Linux recomendado Backup e PHP conbinação explosiva.
   Script Linux recomendado Monitoração do CBQ
   Script Linux recomendado Backup de Repositórios Subversion
   Script Linux recomendado Script Firewall Iptables + compartilhar internet
   Script Linux recomendado Pequeno sistema de backup (Rsync + SAMBA + Tar + FTP)

Comentários
[1] Comentário enviado por cherevers em 01/12/2011 - 18:26h:

Boa, mas podia ter outro script para recuperar no caso de recovery ou migração.


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.