Baixe o app para aproveitar ainda mais
Prévia do material em texto
UFRJ – IM - DCC Departamento de Ciência da Computação 18/12/2013 Profª Valeria Menezes Bastos 1 Tópicos Especiais em Programação Backup (tar) � Utilizado na criação de cópias de segurança � Permite agrupar arquivos em um único e desagrupar arquivos compactados Parâmetros: -f Especifica o nome do arquivo de backup; 2DCC-IM/UFRJ Profª Valeria M. Bastos -f Especifica o nome do arquivo de backup; -v Mostra na tela a execução do tar (verbose); -w Modo interativo; -z Utiliza o gzip (*.tar.gz); -c Cria novo arquivo; -x Extrai arquivos (descompactação); -t Lista conteúdo de um arquivo; -u Atualiza arquivo; -G Backup incremental; -r Adiciona arquivos no backup; -M Backup Multivolume. Exemplos # tar -cf destino.tar origem # tar -c origem > destino.tar # tar -cvf /dev/st0 /etc # tar -czf destino.tgz /etc/* # tar -xfz backup.tgz arquivo de backup Outra forma de geração da cópia Arquivo de backup -> fita magnética Cria o backup compactado do diretório/etc O restore deve ser feito da mesma forma que foi feita a gravação 3DCC-IM/UFRJ Profª Valeria M. Bastos # tar -xfz backup.tgz # tar -rf backup.tar /usr/local/etc/* # tar -tf backup.tar # tar -M -cf /dev/st0 /etc/* O restore deve ser feito da mesma forma que foi feita a gravação Adiciona arquivos no backup já existente � opção r Emite uma lista dos arquivos do tar Backup multivolume Backup (cpio) � Utilizado na criação de cópias de segurança � Apesar da sintaxe ser diferente da do tar, o resultado é exatamente o mesmo � Recebe uma lista de arquivos a serem agrupados 4DCC-IM/UFRJ Profª Valeria M. Bastos � Recebe uma lista de arquivos a serem agrupados Parâmetros: -0 (saída / passagem) lê arquivo terminado em caractere nulo; -A (saída) adiciona um arquivo existente; deve estar especificado -0 ou –F; -d cria diretório (quando necessário) -i (entrada) extrai arquivos -o (saída) cria arquivo de saída -r renomeia interativamente os arquivos -t (entrada) lista o conteúdo -u sobrescreve sem perguntar -v lista arquivos processados (verbose) Exemplos # cat lista.txt exemplo/arquivo1.txt exemplo/arquivo2.txt exemplo/arquivo3.txt exemplo/arquivo4.txt #cpio -o <lista.txt > cpio.bin Cria um arquivo binário (cpio.bin) com o conteúdo de cada arquivo que estava na lista. O mesmo que o exemplo anterior 5DCC-IM/UFRJ Profª Valeria M. Bastos # find exemplo -name arquivo* |cpio -o >cpio.bin # find exemplo -name arquivo* |cpio -o| zip >cpio.zip # cpio –i < cpio.bin # unzip cpio.zip | cpio –i # cpio -t < cpio.bin Para desagrupar arquivos compactados é necessário descompactar antes Desagrupando os arquivos Cria backups compactados, bastando desviar a saída para um programa de compactação O mesmo que o exemplo anterior Para listar o conteúdo de um arquivo cpio, basta usar a opção -t O que fazem os comandos ? # cpio -o -H tar <lista.txt >cpio.tar # tar -xvf cpio.tar 6DCC-IM/UFRJ Profª Valeria M. Bastos O que fazem os comandos ? Cria arquivos cpio com formato tar, acrescentando o parâmetro -H tar # cpio -o -H tar <lista.txt >cpio.tar # tar -xvf cpio.tar 7DCC-IM/UFRJ Profª Valeria M. Bastos O que fazem os comandos ? Cria arquivos cpio com formato tar, acrescentando o parâmetro -H tar # cpio -o -H tar <lista.txt >cpio.tar # tar -xvf cpio.tar 8DCC-IM/UFRJ Profª Valeria M. Bastos # find /etc -name \* >lista.txt # tar -T lista.txt -cf backup.tar O que fazem os comandos ? # cpio -o -H tar <lista.txt >cpio.tar # tar -xvf cpio.tar Cria arquivos cpio com formato tar, acrescentando-se o parâmetro -H tar 9DCC-IM/UFRJ Profª Valeria M. Bastos # find /etc -name \* >lista.txt # tar -T lista.txt -cf backup.tar Cria uma lista de arquivos a serem agrupados e depois criar um tar lendo-a. A vantagem é que o tar será executado uma única vez Compressão de dados(gzip) � Utilizado na compressão sem perda de dados � Baseado no algoritmo DEFLATE � O arquivo compactado tem extensão .gz, entretanto, são mantidos o dono, as permissões e as datas de 10DCC-IM/UFRJ Profª Valeria M. Bastos mantidos o dono, as permissões e as datas de modificação do arquivo Parâmetros: -c grava o resultado na saída padrão e mantém o arquivo inalterado -d descompacta (igual ao comando gunzip) -l lista informações sobre os arquivos compactados/descompactados -r compacta/descompacta recursivamente (percorre a estrutura de diretórios recursivamente) -t verifica a integridade do arquivo compactado Exemplos $ gzip teste1.txt $ gzip –c teste1.txt >teste.gz $ gzip –c teste2.txt >> teste.gz Compacta o arquivo teste1.txt O arquivo teste.txt.gz substitui o arquivo original Criam o arquivo teste.gz, que contém os arquivos teste1.txt e teste2.txt 11DCC-IM/UFRJ Profª Valeria M. Bastos $ gzip –c teste2.txt >> teste.gz # gzip –d teste # gunzip teste Descompactando o arquivo teste.gz Agendamento de tarefas � Agendamento de tarefas (cron e at) � O agendamento de tarefas é um recurso muito interessante para a administração de sistemas operacionais. É possível programar a execução de scripts de manutenção do 12DCC-IM/UFRJ Profª Valeria M. Bastos � É possível programar a execução de scripts de manutenção do sistema, disparar envio de newsletters, gerar relatórios de analises de logs, entre outros � Podem ser em determinados horários específicos para execução ou estabelecer intervalos regulares cron � No GNU/Linux estes recursos são implementados pelo cron, que pode ser utilizado tanto pelo administrador como pelos outros usuários do sistema. � Implementa uma agenda de tarefas para cada usuário 13DCC-IM/UFRJ Profª Valeria M. Bastos � Implementa uma agenda de tarefas para cada usuário � É encarregado de verificar a hora e determinar se existe ou não algum programa/comando a ser executado � Depois de executar a tarefa agendada, o cron envia um e-mail para o usuário relatando a saída padrão que seu programa ou comando gerou. cron � Para agendar as tarefas é necessário usar o comando crontab � Existem diversas formas de se agendar um comando no cron. 14DCC-IM/UFRJ Profª Valeria M. Bastos no cron. � Colocar o script em uma dessas pastas: � /etc/cron.daily (a cada dia) � /etc/cron.hourly (a cada hora) � /etc/cron.monthly (a cada mês) � /etc/cron.weekly (a cada semana) cron � É possível alterar o destinatário adicionando ao crontab de cada usuário a seguinte linha: MAILTO= alguem@algum_dominio.com 15DCC-IM/UFRJProfª Valeria M. Bastos � O daemon cron checa quaisquer alterações no arquivo /etc/crontab, no diretório /etc/cron.d/ e no diretório /var/spool/cron.a, a cada minuto. crontab � Configurando tarefas no crontab � Todos os crontabs definidos pelo usuário são armazenados no diretório /var/spool/cron e executados usando o nome do usuário que os criou. 16DCC-IM/UFRJ Profª Valeria M. Bastos usuário que os criou. � Para criar um crontab como um determinado usuário, é necessário se conectar como este usuário e digitar o comando crontab -e para editar o crontab do usuário. � Ao salvar as alterações do crontab, este é armazenado de acordo com o nome do usuário e gravado no arquivo /var/spool/cron/nome_do_usuário. crontab � Configurando tarefas no crontab � Opções do crontab: crontab -e Edita o crontab ou cria um caso ainda não exista; crontab -l Mostra o conteúdo do crontab; 17DCC-IM/UFRJ Profª Valeria M. Bastos crontab -l Mostra o conteúdo do crontab; crontab -r Remove o crontab; crontab -v Mostra quando foi a última vez que o crontab foi editado (disponível em apenas alguns sistemas). Arquivo crontab � Configurando tarefas no crontab � O crontab controla as tarefas agendadas por cada usuário. � Existe um arquivo para o sistema (/etc/crontab) e um para cada usuário, localizado em /var/spool/cron/<usuário>. 18DCC-IM/UFRJ Profª Valeria M. Bastos cada usuário, localizado em /var/spool/cron/<usuário>. O usuário root pode acessar o crontab de outros usuários, basta informar o nome do usuário após as opções -r, -l ou -e. O arquivo crontab tem o seguinte formato: [minutos] [horas] [dias do mês] [mês] [dias da semana] [usuário] [comando] onde: - - - - - | | | | | | | | | +----- dia da semana (0 - 6) (domingo=0) | | | +------- mês (1 - 12) | | +--------- dia do mês (1 - 31) | +----------- hora (0 - 23) +------------- minuto (0 - 59) Criando um crontab... � Apenas para exemplo, vamos criar este script: 1 – Editar o arquivo “backup.sh” com os comandos #!/bin/bash #fazendo backup do /etc DATA=`date +%Y-%m-%d-%H.%M` 19DCC-IM/UFRJ Profª Valeria M. Bastos DATA=`date +%Y-%m-%d-%H.%M` cd /root tar -cvzf backup-"$DATA".tar.gz /etc 2 – Transforme-o em executável # chmod +x backup.sh Este script gera um backup do diretório /etc no diretório /root, e para evitar que um backup sobrescreva o outro ou que tenhamos de ficar renomeando os arquivos a cada backup, este script gera o arquivo de backup já com data e horário incluídos em seu nome, como em: /home/root/backup-2006-09-17-11.44.tar.gz Criando um crontab... � Continuando... 3 – Editar o crontab # crontab –e 20DCC-IM/UFRJ Profª Valeria M. Bastos É necessário adicionar o período (tempo) que o cron deve chamar o script de backup. Neste exemplo, o script será executado todos os dias as 22hrs. 00 22 * * * /usr/local/bin/backup.sh Criando um crontab... � Continuando... 4 - Salve o arquivo e reinicie o cron para que a rotina funcione. 21DCC-IM/UFRJ Profª Valeria M. Bastos # /etc/init.d/cron restart 5 - Para visualizar os agendamentos feitos (por usuário), use: # crontab -l Criando um crontab... � Continuando... 6 - Se desejar apagar os agendamentos, digite o comando: 22DCC-IM/UFRJ Profª Valeria M. Bastos # crontab -r Uso do cron � Outros exemplos: Para que o script de backup seja executado diariamente, basta copiar o script para /etc/cron.daily 23DCC-IM/UFRJ Profª Valeria M. Bastos # cp backup.sh /etc/cron/daily Exemplos 00 3,5,7 * * * root /usr/local/sbin/backup.sh Diariamente, às 03:00h, 05:00h e 07:00h será executado, pelo usuário root, o script backup.sh Às 16:40 dos dias 01 de junho, �Agendamento de tarefas (crontab) 24DCC-IM/UFRJ Profª Valeria M. Bastos 40 16 1 6-8 * /home/oracle/sqldump.sh A especificação do usuário para executar o script é opcional. */5 * * * * php /var/www/cacti/poller.php > /dev/null 2>&1 Às 16:40 dos dias 01 de junho, julho e agosto, será executado o script sqldump.sh Executa, a cada 5 minutos, o arquivo poller.php com usuário php, redirecionando a saída de erros para a saída padrão. at � O comando "at" permite agendar tarefas de forma semelhante ao cron, e é integrado à interface de linha de comando do Linux. É muito eficiente se aplicado no agendamento de 25DCC-IM/UFRJ Profª Valeria M. Bastos � É muito eficiente se aplicado no agendamento de tarefas que sejam disparadas somente uma vez. Sintaxe: at <quando> <comando> <quando> pode ser: now 3am + 2 days midnight 10:15 april 12 teatime Os agendamentos ficam armazenados em /var/spool/at/*. Para conferir os agendamentos do usuário atual, usa-se $ at -l ou $ atq Um agendamento pode ser apagado através de seu número específico, fornecido para o comando $atrm at � O at permite o controle dos usuários que podem agendar comandos através dos arquivos /etc/at.allow e /etc/at.deny. Estes arquivos são organizados no formato de um usuário por linha. 26DCC-IM/UFRJ Profª Valeria M. Bastos � Durante o agendamento é verificado primeiro o arquivo at.allow (listando que pode executar o comando) e depois at.deny. � Caso eles não existam, o agendamento de comando é permitido a todos os usuários. Agendando com o at echo ls /var/log | at 10am today echo updatedb | at 10:00pm today Executa o comando ls às 10 da manhã de hoje Executa o comando updatedb às 10 da noite de hoje 27DCC-IM/UFRJ Profª Valeria M. Bastos echo updatedb | at 10:00pm today echo netstat | at 14:30 tomorrow at -f commands.txt teatime at -f commands.txt +3 minutes Executa comandos especificados no arquivo "commands.txt" daqui a 3 minutos. Executa o comando netstat às 14:30 da tarde de amanhã Executa os comandos especificados no arquivo "commands.txt" no horário do chá da tarde (às 16:00 horas) nohup � Permite executar programa de forma "desconectada" da sessão atual. � Faz com que o processo sendo disparado se torne imune ao sinal SIGHUP, ou seja, se o usuário fizer 28DCC-IM/UFRJ Profª Valeria M. Bastos imune ao sinal SIGHUP, ou seja, se o usuário fizer logout, o comando continuará a rodar em segundo plano, emitindo sua saída para o arquivo nohup.out. � Em combinação com o &, ele permite o disparo de programas que permanecerão em execução mesmo após o logout do usuário. nohup � Sintaxe: nohup <comando> [<arg>]... � Exemplo: crie o script 29DCC-IM/UFRJProfª Valeria M. Bastos Exemplo: crie o script � Execute o script sem redirecionamento while(true) do echo "standard output" echo "standard error" 1>&2 sleep 1; done nohup � A saída será: $ nohup sh custom-script.sh & [1] 12034 $ nohup: ignoring input and appending output to 'nohup.out' $ tail -f nohup.out standard output 30DCC-IM/UFRJ Profª Valeria M. Bastos � Execute o script com redirecionamento standard output standard error standard output standard error .. nohup � A saída será: $ nohup sh custom-script.sh > custom-out.log & [1] 11069 $ nohup: nohup: ignoring input and redirecting stderr to stdout $ tail -f custom-out.out standard output 31DCC-IM/UFRJ Profª Valeria M. Bastos standard output standard error standard output standard error .. nohup � Se você sair de sua sessão e retornar através de login, você ainda verá seu custom-script.sh executando em background $ ps aux | grep <seu_usuário> 32DCC-IM/UFRJ Profª Valeria M. Bastos seu_usuario 12034 0.0 0.1 4912 1080 pts/2 S 14:10 0:00 sh custom-script.sh
Compartilhar