Skip to content

nilsonpena/BkpUtil

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Shell Script que automatiza backups para Linux

Sistema Testado: CentOS 5.3

Esse script faz um backup completo a cada mês (AAAA-MM-DD.full.tar.gz) e um backup
incremental (AAAA-MM-DD.inc.tar.gz) a cada dia. A cada novo mês o arquivo full do mês anterior é salvo
como arquivo morto (AAAA-MM.full.tar.gz.OLD). É possivel configurar a quantidade de meses que serão armazenados no backup.

É necessário ter o ssmt instalado para que o administrador seja avisado por email
do andamento dos backups.

UTILIZAÇÃO
Torne o arquivo bkputil.sh executável ex.: chmod +x bkputil.sh

Renomeie os arquivo bkp.conf.samble, bkp.list.sample e bkp.excluded.list.sample, removendo
a extensão .sample e se preferir  mude o nome bkp para algum nome que lhe lembre o que está
sendo feito o backup, por ex.: MinhaMusicas.conf MeusDocs.conf. O nome do arquivo .conf
será utilizado para identificar os logs e criar uma pasta na raiz do HD EXTERNO para armazenar
os arquivos de backup.

Observe que arquivo de configuração (.conf) deve ficar no mesmo local do bkputil.sh

Edite o arquivo .conf de acordo com as suas necessidades, todos os campos estão
devidamente comentados.

O HD externo precisa ter um label e este precisa ser informado no arquivo de configuração(.conf).

No arquivo .list coloque em cada linha os nomes completos dos diretórios/arquivos que deseja
incluir no sistema de backup. Wildcards(* ? etc) não são permitidos.

No arquivo .excluded.list coloque em cada linha os nomes dos diretórios/arquivos
que deja que não sejam incluidos no backup. É possível utilizar padrões, como por
ex.: *.mp3 irá deixar todos os arquivos que terminam com .mp3 fora do backup.

O script deve ser iniciado como root e o nome do arquivo .conf deve ser passado como 
parâmetro ex.: sh bkputil.sh bkp.conf

No diretório logs ficarão armazenados os logs de todos perfis de backup, registrando a atividade do mes no arquivo .log e conteúdo do último email enviado no arquivo
mail.log. A cada novo mês os logs são compactados

BACKUP FULL
É o backup completo que é gerado todo mês. Assim que o script detecta que o mês mudou e não existe um arquivo full.tar.gz no diretório de backup, ele se encarrega de
criar um novo arquivo FULL e arquivar os antigos de acordo com a política determinada no arquivo .conf.

O comando utilizado é:
tar -czp --ignore-failed-read --exclude-from=CONF_NAME.excluded.list -g CONF_NAME.inc -f AAAA-MM-DD_DIA_DA_SEMANA.CONF_NAME.full.tar.gz -T $CONF_NAME.list
NOTA: os arquivos CONF_NAME.excluded.list, CONF_NAME.list devem ser criados pelo próprio usuário, com o nome que lhe for mais conveniente no lugar de "CONF_NAME"
e devidamente informados no arquivo .conf

As opções utilizadas no comando tar na hora de criar um backup FULL são:
-c = Cria um arquivo
-z = Compacta o arquivo
-p = Mantém as permissões dos arquivos
--ignore-failed-read = Continua o backup mesmo que seja encontrado um arquivo inlegível
--exlude-from = Lê um arquivo com a lista de diretórios/arquivos ou padrões que devem ficar fora do backup
-g = Informa um arquivo que deve ser utilizado como controle do backup incremental
-f = Informa o nome do arquivo que será gerado após o backup
-T = informa o nome do arquivo que comtém a lista de diretórios que devem ser incluídos no backup

BACKUP INCREMENTAL
O backup incremental é feito diariamente e o comando utilizado é o mesmo do backup FULL. a única diferença está no nome do arquivo que passa
a ter a palavra "inc" no lugar da "full".

Toda vez que um backup full é gerado, todos os backups inc são apagados previamente.

AGENDAMENTO
Insira em /etc/crontab a execução do script em uma rotina diária, na hora que lhe for mais conveniente,
ex.:  45 19 * * * root sh /home/meus_scripts/bkputil/bkputil.sh bkp.conf
Dessa forma, em todos os dias do ano às 19:45 o script será iniciado


A linha do crontab é dividida em 6 campos
*	*	*	*	*	USUARIO COMANDO
Campo 	Função
1o. 	Minuto (0-59)
2o. 	Hora (0-23)
3o. 	Dia do mês (1-31) 
4o. 	Mês (1-12)
5o. 	Dia da semana (0-6, onde 0 é domingo)
6o. 	USUARIO COMANDO para execução

About

Shell script para backup incremental utilizando TAR

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages