Cópias automáticas da sua aplicação: cron e mysqldump

A conta já tem cópia diária feita por nós, de madrugada. Uma cópia da sua aplicação, feita por si, serve para dois casos: ter a base de dados e os ficheiros à mão sem esperar por uma restauração, e ter uma cópia fora da conta. O truque é um pequeno script que faz o mysqldump e o arquivo dos ficheiros, e uma tarefa agendada que o chama.

Montar, passo a passo

1 Guarde a palavra-passe da base num ficheiro à parte, e não no script nem na linha de comandos. Crie /home/SUACONTA/.copia.cnf com o conteúdo abaixo e dê-lhe a permissão 600.[client]
user=conta_utilizador
password=a-palavra-passe
host=localhost
2 Crie o script /home/SUACONTA/scripts/copia.sh. Os nomes da base e do utilizador levam o nome da conta à frente. A última linha apaga as cópias com mais de 7 dias (um exemplo: troque o número pelos dias que quer manter), e a pasta das cópias fica fora de public_html.#!/bin/bash
DEST=/home/SUACONTA/copias
DATA=$(date +%F)
mkdir -p "$DEST"
mysqldump --defaults-extra-file=/home/SUACONTA/.copia.cnf --single-transaction conta_basedados | gzip > "$DEST/base-$DATA.sql.gz"
tar -czf "$DEST/ficheiros-$DATA.tar.gz" -C /home/SUACONTA public_html
find "$DEST" -type f -mtime +7 -delete
3 Teste à mão no Terminal: bash /home/SUACONTA/scripts/copia.sh. Veja se os dois ficheiros apareceram e se o tamanho faz sentido.
4 Agende em Cron Jobs, a uma hora calma: /bin/bash /home/SUACONTA/scripts/copia.sh >> /home/SUACONTA/scripts/copia.log 2>&1. A hora é a do servidor. Veja tarefas agendadas.
5 Leve-a para fora da conta. Descarregue-as por SFTP ou deixe que o seu computador as vá buscar à hora que quiser. Veja fazer e guardar a sua própria cópia.
6 Teste repor. Para a base: gunzip < base-DATA.sql.gz | mysql -u utilizador -p nome_da_base. Mais em copiar e repor com mysqldump.
Cuidado Porquê
Fora de public_html Uma cópia lá dentro é descarregável por qualquer pessoa que adivinhe o nome.
Palavra-passe no ficheiro .cnf Fica fora do histórico de comandos e do script, e com permissão 600 só a sua conta a lê.
Poucas cópias locais Contam para o espaço e para o número de ficheiros da conta. Veja os limites.
Hora calma Uma cópia grande gasta processador e disco da conta enquanto corre.
Uma cópia que está na mesma conta não protege de perder a conta. Serve para ser rápido; para estar seguro, tem de haver uma cópia noutro sítio. E uma cópia que nunca foi reposta pode estar vazia sem ninguém ter reparado.
Cuidado com o % no cron. Num comando de cron, o carácter % tem de se escrever \%. É por isso que a data fica dentro do script, e não na linha do cron.
Usa PostgreSQL? O pg_dump faz o papel do mysqldump. Está explicado em copiar com mysqldump e pg_dump. E o que o JetBackup guarda, e por quanto tempo, está em quanto tempo guardamos as cópias.

A tarefa corre, mas o ficheiro de registo mostra um erro que não percebe? Envie-nos a linha do cron e o texto do registo.

Abrir um pedido de suporte

VEJA TAMBÉM

Copiar com mysqldump e pg_dump, e repor a cópia

Tarefas agendadas: para que servem e como criar uma

Fazer e guardar a sua própria cópia, e testar que funciona

Quanto tempo guardamos as cópias, e como restaurar uma

PRODUTO RECOMENDADO

Alojamento de sites com cPanel

Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 5.940,00 Kz/mês (plano de 3 anos, com cupão)

Ver planos
  • 0 Utilizadores acharam útil
Esta resposta foi útil?