Como restaurar backups em uma tabela PostgreSQL

De tempos em tempos eu preciso restaurar um backup de alguma tabela para outra ou preencher a tabela de um novo ambiente de desenvolvimento local com dados reais para testes. Como não é uma tarefa diária, nem sempre me lembro como faz, então resolvi juntar aqui o passo a passo até pra facilitar nas próximas vezes e talvez possa também ajudar alguém.

Antes de poder restaurar algum backup, precisamos fazê-lo! O comando utilizado para isso é o pg_dump que já nos devolve um dump da tabela inteira – se quiser saber mais clique aqui para ler a documentação.

pg_dump dbname > backupfile.sql

No comando acima, extraímos todos os dados do banco (troque dbname pelo nome da sua tabela) e jogamos em um arquivo .sql. Pronto, já temos o backup salvo. Dica: esse é um jeito bem fácil de manter backup de seus bancos. Recomendo criar um comando que faça esse backup e utilizar o Cron para fazer isso automaticamente sempre.

Para restaurar o backup num banco, o postegres também nos permite fazer isso de um jeito bem simples, mas tem alguns detalhes:

1) o banco precisa existir com o mesmo nome do banco que foi extraído.
2) o banco não pode ter as tabelas criadas, senão vai dar conflito e a restauração não vai dar certo.

Nesse caso, se o banco já existir primeiro eu dou dropdb db_name que vai deletar o banco (IMPORTANTE, eu só faço isso em bancos locais, porque isso apaga todos os dados do banco, então NUNCA faça isso em produção a menos que você saiba exatamente o que está fazendo. Dá justa causa, hein? Deus tá vendo). Depois de deletar, precisamos recriá-la senão a restauração não vai funcionar por não encontrar o banco. Para recriá-lo: createdb db_name

Por fim, para restaurar os dados, jogamos o arquivo no novo banco:

psql dbname < infile

Pronto, temos um banco restaurado! Para mim esse processo é fundamental em dois momentos: quando por algum motivo – normalmente tenso – eu preciso restaurar o banco em produção ou quando vou começar um novo ambiente de desenvolvimento e preciso de dados para testar o app e as mudanças que estou fazendo.

Como gravar sua tela em gifs animados no Linux

Todo mundo que me conhece sabe que sou fã incondicional de gifs animados (a louca dos gifs). Ultimamente fui surpreendida pela popularização da utilização de gifs em tutoriais e documentações técnicas, algo que eu ainda não havia pensado sobre mas que achei genial pela simplicidade e eficiência dessa prática. Além de tornar documentações e tutoriais muito mais envolvente. Veja um exemplo que estamos usando na Escola Mupi (aqui tem uns legais também):

Exemplo de gif animado em guias de usabilidade

Existem várias formas de se fazer isso. Você pode, por exemplo, gravar sua tela em video e depois editar exportando para gif (o Adobe Premiere faz isso, Camtasia também, e existem alguns programas só para este fim). Mas como uso Linux, precisei aprender como fazer isso sem esses programas que só rodam no Windows ou Mac OS, e encontrei o Byzanz, que você pode ver seu código aqui.
O Byzanz permite gravar a tela diretamente em um gif animado. Como não encontrei muitas informações sobre ele (parece que seu site está fora do ar), resolvi criar esse tutorial para ensinar como utilizá-lo, já que o achei super simples e soluciona muito bem essa necessidade.
Spoiler: é tudo pela linha de comando então se você, assim como eu, tem muito apego visual, recomendo um pouquinho de paciência que no fim das contas é simples de usar e é possível que você vicie e queira gravar tudo! 🙂

1 – Instalar o Byzanz Abra o seu terminal e execute os passos abaixo para instalar o Byzanz.
Se você usa Fedora e Gnome, o byzanz já está no repositório do Fedora então basta instalar:
$ sudo yum install byzanz

No Ubuntu 14.04:
$ sudo add-apt-repository ppa:fossfreedom/byzanz
$ sudo apt-get update
$ sudo apt-get install byzanz

2 – [Opcional] Instalar o Wmctrl
Esse passo é mais uma dica, ele não é necessário. Mas através do Wmctrl (um comando que permite você gerenciar suas janelas) a gente consegue experimentar tamanhos e posicionamentos de janelas para definir a área a ser gravada antes de usar o Byzanz.
Para instalar é igual ao passo 1:
– Para Fedora:
$ sudo yum install wmctrl

– Para Ubuntu:
$ sudo apt-get install wmctrl

Se não achar o Wmctrl, leia este tutorial.

3 – Definindo o tamanho da janela que você quer gravar.
Com o Wmctrl fica bem mais fácil essa etapa, por isso o passo dois. A linha abaixo está dizendo para posicionar a janela atual (no caso sua janela do terminal) se posicionar 500 pixels à direita (eixo x), 100 pixels abaixo (eixo y), com a largura (width) de 800 pixels e altura de 600 (altura) pixels. A opção -e significa que ele vai redimensionar a janela com os parâmetros definidos.
$ wmctrl -r :ACTIVE: -e 0,500,100,800,600
E é só isso que precisamos do Wmctrl, se quiser ver mais opções é só ver o help do Wmctrl com o comando $ wmctrl --help. Agora você pode ficar experimentando os valores até achar o que quer:
terminal

4 – Gravando a tela com o byzanz
Com os valores de tela definido, você posiciona a janela que vai ser gravada, seu navegador por exemplo, no local que ficou sua janela do terminal do passo três.
O uso do byzanz usa os seguintes parâmetros: byzanz-record [opções] nomedoarquivo.gif. No caso do meu exemplo usei o comando abaixo, onde -d 10 se refere à duração da gravação e -c que vai gravar o cursor:
$ byzanz-record -d 10 -c --x=500 --y=100 --width=800 --height=600 terminal.gif
Para conferir o resultado é só ir na pasta onde você salvou e abrir o gif no seu navegador 🙂
Para mais opções do byzanz basta acessar seu manual: byzanz-record --help

E seu gif está pronto :] Simples, não? Eu particularmente achei muito melhor do que depender de editores de videos pesados que demoram pra renderizar e são difíceis de mexer.
Agora é experimentar, boas gravações!
Ah, e se for gravar pra web só cuidado com o tamanho final dos gifs, afinal cada frame é uma imagem que podem custar caro pra sua performance.