Agendar Backups Linux: crontab tar date

Comando tar: serve basicamente para compactar arquivos, criar backups etc.

tar -c
serve pra criar um arquivo novo

tar -p
serve para listar o conteudo

tar -x

serve para extrair um arquivo

Normalmente uma destas 3 letras é acompanhado de:
v para mostrar na tela o que esta sendo feito
f para jogar o conteudo do arquivo para um novo
j para compactar igual ao 7zip, mais nova, GZ2, muito bom
z tambem serve para compactar, mas nao tao bom...

Então, para criar arquivo novo + ver + compactar + dizer que o resultado eh um file (arquivo)

tar -cvjf nome_novo_arquivo o_q_vai_ser_compactado


Ex.: fazer um bkp de todos os dados do usuario bolivar

tar -cvjf bkp_bolivar_2011_11_11.tar.gz2 /home/bolivar/*


Agora com data e hora automática

tar -cvjf bkp_bolivar_`date +%Y_%m_%d_%H_%M`.tar.gz2 /home/bolivar/*


Para listar o conteúdo

tar -tvf bkp_bolivar_2011_11_11.tar.gz2


Para extrair o conteúdo

tar -xvf bkp_bolivar_2011_11_11.tar.gz2





comando date: pega a data do sistema

Pode-se formatar a data em diferentes formatos, Y-m-d H-M ou d/m/Y ... mas lembre-se de em nomes de arquivo nao pode usar / entre outros...

date +%y
date +%Y
date +%m
date +%d
date +%H
date +%M



Comando crontab: faz o agendamento de tarefas

Para ver o que já está agendado para executar:

crontab -l

Para editar agendamentos:

crontab -e

Provavelmente ao editar vai pedir qual editar de texto voce deseja usar, fui com o nano, opcão 2, que é mais fácil.
Configura: m h dom mon dow command
Que significa: Minuto Hora DiaDoMes Mes DiaDaSemana Comando

Para gravar um log, como temos no comando TAR o V, ele mostraria na tela o que foi feito, podemos jogar em um arquivo o bkp semanalmente, diariamente, de 15 em 15 minutos ficaria assim:

0-15-30-45 * * * * tar -cvjf /home/bolivar/bkp_bolivar_`date +%Y_%m_%d_%H_%M`.tar.gz2 /home/bolivar/* > /home/bolivar/bkpLog.txt

Comandos Unix: ps, grep, sed, cut, awk, chmod, mysql, crontab

Anotecões aula de Sistemas Operacionais, ajustadas para virar um tutorial de como criar um script para salvar logs do uso de memória e processador por determinado processo.


Uso do VI

i para escrever
:q para sair
:wq para salvar e sair
:w <nome arquivo> para salvar como

Atividades escrever script para armazenar em arquivo a cada minuto a % de CPU e qtde de memória usada por um processo.

Ver os processos e salvar no arquivo texto o resultado:

ps -faux > arquivo.txt

ps pega os processos, grep compiz busca apenas linhas com 'compiz', sed pra apagar tudo menos a linha 1, linha 2 em diante, >> add no log.txt

ps aux | grep compiz | sed '2,$ d' | cut -b 16-24 >> log.txt

cut serve pra cortar a string, -b corta bytes, pegando apenas do caracter (cada caracter é um byte) 16 ao 24

ps aux | grep compiz | sed '2,$ d' | cut -b 16-24 | awk '{print $1,";",$2}' >> log.csv

ou pode-se mudar as colunas pelo awk, pegando diretamente as corretas sem usar o cut.

ps aux | grep compiz | sed '2,$ d' | awk '{print $3,";",$4}' >> /home/bolivar/visamples/log.csv


crontab -e para adicionar o comando, dizendo pra executar a cada minuto.

* * * * * ps aux | grep compiz | sed '2,$ d' | awk '{print $3,";",$4}' >> /home/bolivar/visamples/log.csv


Agora pra salvar em um banco MySQL, crie um banco chamado logs e uma tabela chamada log com dois campos decimais, uma pra cpu e outro pra memoria. criar um script Shel log_processo_mysql.sh com o sql insert:

ps aux | grep mysql | sed '2,$ d' | awk '{print "INSERT INTO log (cpu,mem) VALUES (",$3,",",$4,");"}' > /home/bolivar/log_insert.sql

mysql -u root --password='root' -D logs < /home/bolivar/log_insert.sql

De permissao de execucao pro script

chmod +x log_processo_mysql.sh

No crontab agora ficou assim.

* * * * * /home/bolivar/log_processo_mysql.sh

Pra verificar se está funcionando, acessa o mysql:

mysql -u root --password='suasenha'

depois selecione o banco:

use logs;

e execute o select:

select * from log;

pra ver os bancos:

show databases;

pra ver as tabelas, primeiro selecione o database e depois:

show tables;

pra sair do mysql:

quit

pra sair do prompt:

exit