Home / Dicas e Tutoriais / Script Para Backup – Compactado com Tar e Gz, com Timestamp – Agendado via Cron

Script Para Backup – Compactado com Tar e Gz, com Timestamp – Agendado via Cron

E aí pessoal,

Recentemente falei sobre um sistema de Backup para instalar em servidores, que funciona com comunicação client/server chamado Bácula. (Saiba mais sobre o Bácula: Sistema de Backup Open Source Bacula e Crie Seu Próprio Servidor de Backup com o Bacula).
E há também diversos outros sistemas de Backup gratuitos e pagos, que fazem isso.

Mas Hoje o Tutorial É Mais Simples!

Hoje passarei uma forma de automatizar seus backups de arquivos independentemente de sistemas sofisticados de backup.

“…vai que (…)”

robocop

Rotina Simples de Backup

Existe uma forma de automatizar seus backups de arquivos, através das ferramentas que já possui em seu Linux Desktop ou Server (como o Tar e o Cron), e sem gastar, nem instalar nada.
(Saiba mais sobre o Cron – (Agendador de Tarefas do Linux).

Já pensou nisso? Criar uma rotina de backup que:

  • Rodasse automaticamente em uma data e hora que você especificou;
  • Compactasse todo o conteúdo em um arquivo só, e ainda mais;
  • Colocasse no nome do arquivo a data do último backup realizado?

“Seus Problemas ‘Se Acabaram-Se”!!!

seu-creyssonHoje um tutorial simples sobre fazer backup de diretórios no Linux usando tarefas com tar (compactador) e cron (agendador).

Quase todos os Administradores Linux usam este método para fazer backup de seus dados críticos, que permite que você facilmente e rapidamente faça backup de seus arquivos ou todo o sistema.

Mas Antes de Começarmos…

Explicando TAR e Gzip

Vamos usar o TAR que empacota seus arquivos em um arquivo só, e depois, com o Gzip, para compactá-lo.

tar e gz

A Sintaxe é a seguinte:

# tar -cvpzf   /Diretório-Destino/nome-do-arquivo.tar.gz /Pasta-a-fazer-backup/pasta/

Exemplo:

Eu tenho diretório chamado “/dados-top” na raiz que está cheio de imagens, e eu quero fazer backup desse diretório, incluindo sub-diretórios e salvá-lo em um local diferente, como em /meubackup.

Então meu comando será:

# tar -cvpzf /meubackup/backup.tar.gz /dados-top

Saída do Comando:

tar4

Se estiver usando interface gráfica e quiser conferir.

Explicação dos parâmetros do Comando TAR:

  • tar = Tape archive.
  • c = Create.
  • v = Verbose mode.
  • p = Preserva os arquivos e as permissões dos diretórios.
  • z = Isto irá dizer ao tar para compactar os arquivos ainda mais para reduzir o tamanho do arquivo tar.
  • f = Este permite ao tar pegar o nome do arquivo.

Agora vamos criar um script bash com o comando tar nele.

Tutorial – Automatização do Backup

Para automatizarmos o backup iremos basicamente fazer isso em 2 passos.

1 – Criar um shell script de backup

2 – Agendarmos ele com o Cron

Agora sim! Vamos Lá?!

1 – Criando o Script de Backup

papiro

1 – Crie o script

Faça-o usando seu editor de texto favorito, como o vi, vim, nano, ou o gedit, e cole abaixo script.

# nano /backup.sh

Cole o Script abaixo no editor de texto.

#!/bin/bash
 #Propósito = Backup de Imagens em "/dados-top"
 #START
 TIME=`date +%b-%d-%y`         # Este comando irá adicionar a data no Nome do Arquivo de Backup.
 FILENAME=Backup-$TIME.tar.gz  # Aqui eu defino o formato do nome do arquivo de backup.
 SRCDIR=/dados-top             # Local Fonte     - onde estão os arquivos a serem feitos backup.
 DESDIR=/meubackup             # Local Destino - onde o Backup será salvo.
 tar -cpzf $DESDIR/$FILENAME $SRCDIR
 #END

Obs. No campo “TIME”, você pode editar o formato de data da maneira que quiser.
Se eu por exemplo preferir dia, mês, ano e então a hora seria assim:

TIME=`date +%d-%m-%Y-%H.%M`

O resultado final no nome do arquivo ficaria (se o dia fosse 07/12/2015 as 06:01 hs):

Backup-07-12-2015-06.01.tar.gz

Salve o arquivo (onde desejar), com o nome backup.sh (ou outro de sua preferência) e então feche o nano (ou o editor que estiver usando). No meu caso, o salvei na raiz também.
Se usou o nano, salve as modificações com o Ctrl+O, digite o nome e saia com Ctrl+X.

Este script irá fazer backup do diretório “/dados-top” e irá salvá-lo em um único arquivo compactado no diretório “/meubackup”.

OBS. CUIDADO COM O ESPAÇO

Este script não inclui apagar os backups antigos, então tome cuidado para não encher todo o disco do local determinado para salvar seu backup.
Existem maneiras de incluir no script comandos que apagam todos os backups anteriores, por exemplo, mais antigos que 2 meses, mas não inclui isso nesse tutorial.

2 – Dando Permissão e Testando

Permissão de execução

# chmod +x /backup.sh

Testando

Se quiser rodá-lo manualmente basta acessar a pasta onde o salvou e rodar com o comando “./backup.sh”

Acessarei a raiz onde o salvei;

# cd /

…e rodarei o script:

# ./backup.sh

Agora repare que ele irá fazer exatamente o que estamos querendo:

tar5

Se quiser checar pelo gerenciador de arquivos novamente.

O “Timestamp”, ou estampa de data, está no nome do arquivo.
Lembrando que hoje é dia 16 de Novembro.

tar6

 

2 – Agendando a Execução do Script no Cron

how_to_run_cron_job

Para configurar tarefas agendadas usaremos o comando “crontab -e”.
Este comando basicamente edita nosso arquivo de tarefas agendadas.

Quando você executar o comando “crontab -e” primeira vez, provavelmente ele irá pedir-lhe para escolher o editor de texto padrão, então, você só precisa selecionar seu editor favorito depois que ele nunca irá pedir-lhe novamente. No meu caso escolhi o “nano” que é a opção 2, e que como ele mostrou em “<—–easiest”, ou seja é o editor mais fácil de usar do que o vim ou o ed.

cron1

Exemplo de Agendamento

Vamos supor que eu quero executar este processo de backup em cada Segunda-feira e Sábado as 13:00 hs.

1 – Abra o utilitário de editor crontab:

crontab -e

2 – Role até o final do arquivo e cole as seguintes linha

# Agendamento do Backup "/dados-top"
 01 13 * * 1,6 /bin/bash /backup.sh

3 – Salve as modificações com o Ctrl+O, e saia com Ctrl+X

cron-config

Explicação da estrutura do Cron:

Minutos  |  Horas   |     Dia do Mês   |   Mês    |   Dia da Semana   |   Comando
0 to 59       0 to 23          1 to 31         1 to 12           0 to 6                  Comando em shell

CRONTAB2

 

2a Opção – Forma de Agendamento Ainda Menos Detalhado

Usando o comando “crontab -e” você criou um agendamento bem específico, mas se quiser fazer algo mais simples, ou seja, que rode de hora em hora, 1 vez semanalmente, mensalmente e assim por diante, existe um meio bem simples. E nesse caso, não use o “crontab -e”.

Apenas copie e cole seu script de backup em uma das pastas do cron específicas que o rodarão conforme o nome de cada pasta.
Temos as seguintes pastas na estrutura de arquivos do Cron:

cd /etc

cron.hourly      => de hora em hora
cron.daily         => diariamente
cron.weekly      => semanalmente
cron.monthly   => mensalmente

Basta colar seu script em uma delas de sua escolha e pronto.

Você pode usar também caracteres especiais no seu cron, como:

@reboot seu comando
@daily seu comando
@monthly seu comando

Então sempre que o dia virar, ou a cada mês ou reboot, o comando será executado.

Outros artigos que falam sobre o Cron:
http://cleuber.com.br/index.php/2014/06/24/agendador-de-tarefas-cron-no-linux
script-para-backup-compactado-com-tar-e-gz-com-timestamp-agendado-via-cron
como-usar-o-comando-rsync-para-transferir-dados-para-diretorios-locais-e-remotos

Visualizando o log de tarefas do Cron

Para ver se as tarefas rodaram adequadamente através da análise de logs, dê uma olhada neste artigo:
http://cleuber.com.br/index.php/2016/01/19/gerenciando-os-logs-do-cron

Conclusão

Em 2 passos, (criando um scrip e agendando no cron), você acabou de automatizar seus backups.
O script contém comandos que os empacota e os compacta através de do tar e gz, e salva-os com o nome que contém a data do backup. Muito chique não é mesmo?!
Isso pode ser aplicado em seu desktop com Linux ou em seus servidores.

E é só isso!

Abraços,

Cleuber

About Cleuber

Cleuber Silva Hashimoto. Administrador

6 comments

  1. MUITO BOM !!! ESTOU USANDO DIRETO !! VALEU !!
    SITE EXCELENTE,MUITAS DICAS E TUTORIAIS,LONGA VIDA !!

  2. CARLOS GIMENEZ

    BOA TARDE A TODOS, FIZ CONFORME ORIENTADO NO 1 – Criando o Script de Backup E A PASTA COMPACTADA SEMPRE VEM NOMEADA COMO Backup-.tar.gz ALGUÉM PODE ME AJUDAR?

Leave a Reply

x

Check Also

Elementary OS 6 Odin Lançado – Confira as Novidades

Desenvolver um sistema operacional não é ...