1) Utilização do aplicativo tar para criação de backups
- Por que usar o tar para backup?
O método mais simples de se fazer um backup é utilizando o tar para armazenar todos os arquivos do sistema ou apenas os arquivos em um conjunto de diretórios específicos. Utilizando o tar em conjunto com os compactadores gzip (opcão z) ou bzip2 (opcão I), é possível armazenar e compactar os arquivos ao mesmo tempo em um único tarfile. A criação de backups utilizando o tar fornece flexibilidade e simplicidade de uso. Parâmetros principais:
-c : criar um novo arquivo tar -x : extrai arquivos de um arquivo tar -t : lista o conteúdo de um arquivo tar -f : usar o arquivo file ou o dispositivo F (padrão /dev/rmt0) -z : filtra os arquivos através de gzip -I : filtra os arquivos através de Bzip2 -v : mostra a lista dos arquivos processados -M : cria/lista/extrai arquivos multivolumes
- Fazendo backups de fita utilizando o tar
Para criação de backups em fita com o tar, utiliza-se o seguinte comando:
[root@localhost]# tar -cvf /dev/rft0 /home /etc
No exemplo acima, é feito o armazenamento em fita dos diretório /home e /etc do sistema, utilizando da compactacão do gzip.
Obs.: Para utilizar do backup em fita, é necessário que o módulo referente à fita esteja ativado no sistema para reconhecimento do dispositivo.
Normalmente é necessário, e recomendável, a leitura da fita para verificação de qual backup foi criado e quais os arquivos presentes nele. Para listagem destes arquivos em fita, utiliza-se o seguinte comando:
[root@localhost]# tar -tvf /dev/rft0
Caso o backup seja finalizado sem ocupar todo o espaço disponível em fita, será necessário rebobinar a fita. Para isto, execute o seguinte comando:
[root@localhost]# mt -f /dev/rft0 rewind
Obs.: Os procedimentos acima consideram /dev/rft0 como padrão de dispositivo de fita. Verifique em seu sistema qual dispositivo está sendo utilizado.
- Como fazer backup em disquete
Para criação de backups em disquete, é utilizado o mesmo comando anterior, modificando somente o dispositivo em questão:
[root@localhost]# tar -cvf /dev/fd0 /home
- Múltiplos volumes
Como o disquete ou fita tem uma capacidade bem limitada de armazenamento, é possível criar armazenamento em _múltiplos volumes_. Fornecendo a opção M ao tar, será solicitado um novo volume para continuação do armazenamento em questão, apenas atentando para a ordem de criacão dos múltiplos volumes:
[root@localhost]# tar cvMf /dev/fd0 /home /etc
Outra opcão é utilizar do comando split para fragmentar o arquivo em questão e do comando cat para restaurar ao arquivo original.
Exemplo:
Considerando um arquivo chamado teste.tar.gz já criado e presente no diretório teste:
[root@localhost teste]# l total 204 drwxr-xr-x 2 root root 4096 Jun 5 16:51 ./ drwxr-x--- 24 root root 4096 Jun 5 16:49 ../ -rw-r--r-- 1 root root 194041 Jun 5 16:46 teste.tar.gz
Tamanho relativo ao diretório teste:
[root@localhost teste]# du -hs 200k .
Fragmentar o arquivo em vários pedaços relativamente com o tamanho definido (no exemplo abaixo, 50000 bytes):
[root@eclipse teste]# split -b 50000 teste.tar.gz [root@eclipse teste]# l total 416 drwxr-xr-x 2 root root 4096 Jun 5 16:51 ./ drwxr-x--- 24 root root 4096 Jun 5 16:49 ../ -rw-r--r-- 1 root root 194041 Jun 5 16:46 teste.tar.gz -rw-r--r-- 1 root root 50000 Jun 5 16:51 xaa -rw-r--r-- 1 root root 50000 Jun 5 16:51 xab -rw-r--r-- 1 root root 50000 Jun 5 16:51 xac -rw-r--r-- 1 root root 44041 Jun 5 16:51 xad
E agora para ter o arquivo inteiro novamente, basta utilizar do comando cat da seguinte maneira:
[root@localhost teste]# cat xaa xab xac xad > teste2.tar.gz
Obs.: Atente à sequência criada para restauracão do arquivo original.
2) Criar backups agendados utilizando o cron
Caso seja necessário criar backups periodicamente, pode-se combinar o servidor de comandos agendados cron com o comando ou script. Simplesmente programe a data no cron para execução do determinado comando de criação de backup. No exemplo abaixo, o cron está agendado para executar o backup dos diretórios /home e /etc às duas horas da manhã: 0 2 * * * root tar cvf /dev/rft0 /home /etc
Maiores informacões:
[root@localhost]# man crontab
[root@localhost]# man 5 crontab
3) Scripts de backup
Utilizar de scripts para o armazenamento de arquivos é muito útil para se obter um backup mais agilizado do sistema. Segue abaixo um exemplo de utilizacão de um script de backup. Os arquivos são gravados diariamente e enviados via email para uma ou mais máquinas ou pessoas, onde são gravados em um arquivo em disco. A automatização via cron, pode ser criada através da inclusão no arquivo /etc/crontab de uma linha como: 0 0 * * * /usr/local/etc/saveconfig 1> /dev/null 2> /dev/null Desta forma, todos os dias, as 00:00 horas, o script /usr/local/etc/saveconfig é executado. Para melhor entender o procedimento, encontra-se abaixo o script saveconfig, contendo explicações detalhadas sobre os passos seguidos:
saveconfig #!/bin/sh # # Script para realização de backup de arquivos de # configuração # via correio eletronico # PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin export PATH # A seguir é criado um arquivo no formato tar, # contendo todos os arquivos # de configuração que se deseja salvar. A lista dos # arquivos deve ser # criada em conjunto com todos os usuários e # administradores da máquina # Observar que o arquivo é criado com diretórios # relativos, ou seja, # iniciados em "." para facilitar a expansão do # arquivo tar em qualquer # localização. # O arquivo tar criado é compactado utilizando-se o # programa gzip # e redirecionado para o arquivo # /tmp/machine.config.tar.gz cd / tar cvf - \ ./var/spool/cron \ ./var/named \ ./etc/aliases \ ./etc/dumpdates \ ./etc/gated.conf \ ./etc/group \ ./etc/hostname.le0 \ ./etc/hostname.le1 \ ./etc/hosts \ ./etc/hosts.equiv \ ./etc/hosts.equiv \ ./etc/inet \ ./etc/vfstab \ ./etc/vold.conf | gzip > /tmp/machine.config.tar.gz # Neste ponto, o formato do arquivo é transformado # pelo comando # uuencode para permitir a sua transferência via mail uuencode /tmp/machine.config.tar.gz machine.config.tar.gz \ > /tmp/machine.config.tar.gz.uu # Em seguida, o arquivo é enviado para a(s) máquinas # de destino # onde deverá ser criado um alias que se encarregará # de realizar # a gravação no local apropriado. Incluir na(s) # máquina(s) de destino, # no arquivo /etc/aliases, uma linha do tipo: # backup: "|/usr/local/bin/deliver -b # /usr/local/doc/backups/machine # # Recomenda-se também a encriptação da mensagem para # aumentar # a segurança deste esquema visto que informações # confidenciais # estarão sendo enviadas. # O programa deliver é de domínio público e serve # para fazer a sincronização # de gravação no arquivo de destino, no caso, # /usr/local/doc/backups/machine. # De tempos em tempos este arquivo deve ser examinado # e removidas as mensagens # mais antigas (manual ou automaticamente). # # No nosso exemplo, o arquivo de backup é enviado # para o usuário para o alias backup na máquina # domínio.com.br. mail -s "Configuracao `date +%d/%m` (machine)" usuário backup@domínio.com.br < /tmp/machine.config.tar.gz.uu # Finalmente, os arquivos temporários gerados devem # ser removidos rm /tmp/machine.config.*
** Script retirado da lista Dicas-L
Mais informacões sobre crontab:
[root@localhost]# man crontab
[root@localhost]# man 5 crontab
4) Utilização do aplicativo cpio para criação de backups
O comando cpio copia arquivos para ou de um arquivo em formato cpio ou tar, o qual é um arquivo que contém outros arquivos e informações sobre estes, tais como seu nome, dono, data de atualização e permissões de acesso.
No modo cópia de entrada, o cpio lê uma lista de nome de arquivos, um em cada linha, na entrada padrão ou de um próprio arquivo, e grava-os em um arquivo maior na saída padrão.Uma forma típica de gerar uma lista de arquivos é pelo comando find ; devendo-se informar o parâmetro -depth para minimizar os problemas com permissões em diretórios que não podem ser gravados ou pesquisados.
Sintaxe do modo de cópia de entrada:
cpio -o [parâmetros] < arquivo > saída No modo cópia de saída, o cpio lê da entrada padrão um arquivo criado com o cpio (modo cópia de entrada) e retira dele aqueles cujo nome combina com o padrão. Sintaxe do modo de cópia de saída: cpio -i [parâmetros] [padrão] < entrada
- Para listar o conteúdo de um arquivo cpio: [root@localhost]# cpio -itvf < nome_do_arquivo - Exemplos - No exemplo abaixo foi criado um arquivo de lista contendo o nome de todos os arquivos presentes no diretório /home. Com o comando cpio, foi criado um arquivo de formato tar contendo os arquivos listados no arquivo _lista_: [root@localhost]# find /home/* -depth > lista [root@localhost]# cpio -oH tar < lista > backup_home - No exemplo abaixo, foi utilizado o cpio para copiar todos os arquivos listados no arquivo _lista_ , criado no exemplo anterior, para os diretórios referentes a cada arquivo: [root@localhost]# cpio -if lista < backup_home Utilizando o formato tar, é também possível extrair da seguinte maneira: [root@localhost]# tar -xvf backup_home
Mais informacões sobre o cpio:
[root@localhost]# man cpio
5) Utilizacão do aplicativo dump para criacão de backups
O comando dump examina arquivos em um sistema de arquivos do tipo ext2 e determina quais arquivos necessitam fazer backups. Utilizando o dump, é possível fazer backup em disco, fita ou outro dispositivo para armazenamento.
Um arquivo dump que ocupa um espaco maior do que o disponível no dispositivo de entrada é quebrado em múltiplos volumes. Na maioria das mídias, o arquivo dump terá o tamanho máximo relativo ao final da mídia, quando este parâmetro é retornado. Em mídias que não retornam o seu ponto de final de mídia, os arquivos dump irão possuir um tamanho previamente determinado pelo tamanho da mídia.Por padrão, todos os arquivos dump de mesma origem de backup possuem o mesmo nome.
É possível também utilizar o dump para realizar backup redirecionando este arquivo para uma máquina remota.
- Opcões gerais: - f : Realiza backup em arquivo, podendo ser dispositivo de fita, disquete ou arquivo em si. - [0-9] : Dump levels - Nível 0 caracteriza um backup completo de todo o sistema de arquivos em questão. Um nível superior a 0 caracteriza backup incremental, relativo a cópia de todos os arquivos novos ou modificados desde o último dump de nível inferior. - u : Atualiza o arquivo /etc/dumpdates após a finalização. Arquivo que contém a data o sistema de arquivos e o nível de dump realizado no sistema.
- Exemplos - No exemplo abaixo, foi feito um backup do diretório / com o comando dump, gravando em um dispositivo de fita: [root@localhost]# dump -0uf /backups/becape.bck /home - No exemplo abaixo, é apresentado a sintaxe pra backups em máquina remota. Neste caso, certifique-se que o serviço sshd está ativo nas duas máquinas e se a máquina remota permite conexão como root.Em seguida,emita o comando abaixo, fazendo a modificações necessárias: [root@localhost]# dump 0fb - 64 [filesystem] | ssh [máquina remota] '(cd [diretório destino];dd of=[arquivo destino] obs=64b)' Exemplo: [root@localhost /root]# dump 0fb - 64 /home | ssh máquina_remota '(cd /backups ; dd of=becape.bck obs=64b)' No exemplo acima, foi feito um backup do diretório /home utilizando a máquina remota para gravar no diretório /backups o arquivo dump becape.bck. - Para verificar os arquivos presentes dentro de um arquivo dump: [root@localhost]# restore -tvf nome_do_arquivo_dump - Outra opcão, é gravar o backup já compactado utilizando o gzip: [root@localhost]# dump -0uf - /root | gzip > /backups/root.bck.gz E para restaurar: [root@localhost]# restore -rvf /backups/root.bck ou, caso se use a compactação: [root@localhost]# gzip -dc /backups/root.bck | restore -rvf - Mais informacões sobre dump: [root@localhost]# man dump
Obs.: O programa restore, pertencente ao pacote dump e usado para restaurar backups, possui um buffer overflow. Sendo um programa SUID root, esta falha pode ser explorada por um usuário local para obter privilégios de administrador (root). Além disso ainda restava um problema onde a máquina poderia deixar de responder por alguns segundos ao executar o restore com certos parâmetros. Pacotes: - i386/dump-0.4b18-1cl.i386.rpm - i386/rmt-0.4b18-1cl.i386.rpm Todos os usuários deste programa devem fazer a atualização deste pacote na página de atualizações: <htmlurl url="http://www.conectiva.com.br/atualizacoes" name="http://www.conectiva.com.br/atualizacoes">
BACKUP O backup existe como forma de previnir que os arquivos sejam apagados acidentalmente, seja por falha física, ou por falha humana. O backup garante a integriadade dos dados, de configurações, bancos de dados, arquivos de usuários. Mas para um backup ser funcional deve-se ter em mente duas coisas: 1 - Um sistema de backup 2 - Uma mídia confiável Na primeira parte, vamos considerar primeiro o volume de backup a ser empreendido. Caso o sistema seja pequeno, pode-se considerar um método pequeno, de backups 'full', ou seja, que tudo seja copiado todo o dia, e que garante um pequeno número de mídia. O incoveniente é a demora do backup. Mas numa grande empresa, precisamos colocar este sistema de uma maneira funcional, onde não pode-se perder grande tempo com o backup, e além do mais, muitas empresas não investem em quantidades de mídia. Por isso uma estratégia de backup é importante. Nesses casos criamos um sistema de backup 'full' e um incremental, que copiará somente os dados alterados durante o dia, ou semana. Veja o esquema abiaxo: - Backup 'FULL' do mês - Backup 'FULL' da semana - Backup incremental da Segunda - Backup incremental da Terça - Backup incremental da Quarta - Backup incremental da Quinta - Backup incremental da Sexta Nesta tabela, utilizamos 7 mídias para efetuar o bakcup do sistema, e no caso de algum problema, restauramos a última cópia full e os backups incrementais que satisfaçam a nossa necessidade. A vantagem deste sistema é a economia de mídias. Pois se fizessemos backups completos todos os dias poderiamos utilizar mais de uma mídia por dia. Na segunda parte temos a questão de mída em si. Esta geralmente utilizada em fita, pois a mesma se apresenta de forma barata para armazenamento de grande quantidades. Podendo ainda, conforme a quantidade de dados, ser utilizados disquetes, discos óticos. Teste sempre o seu backup, pois o precisamos confiar no sistema, e não deixar para descobrir que ele é inificiente quando perdemos todos os dados.
BACKUP USANDO TAPER Recomendado para backup de sistema de arquivos pequenos e sem muita variação. O taper se apresenta de forma simples e amigável para o usuário final. Instale o pacote: [root@localhost]# rpm -ivh taper-* Para utilizar o taper, chama-se como superusário no prompt de comandos: [root@localhost]# taper -T <dispositivo> <opções> Para a escolha do dispositivo usa-se: taper -T SCSI (taper -T s) taper -T ftape (taper -T f) taper -T zftape (taper -T z) taper -T removable (taper -T r) taper -T file (taper -T l) taper -T ide (taper -T i) E as opções uso do taper são: -f file (--rewinding-device) usar arquivos com a opção de rebobinar -n file (--non-rewinding-device) usar arquivos com a opção de não-rebobinar -b file (--both-devices) usa arquivos com as dua opções - c num (--compress-type) Tipo de compressão (0 nenhum, 1 e gzip, 2 int comp, 3 int gzip, 4 fast comp) -F file (--exclude-files) arquivos que não serão incluídos no backup -g name (--volume-title) titulo do volume -l file (--log-file) nome do arquivo de log -m num (--log-level) nivel do log (0=none..4=all) -t name (--archive-title) titulo do backup -? (--help) ajuda Após chamar o taper, este apresenta um menu básico, onas opções principais, pode-se utilizar para fazer o backup, restaurar, testar integridade, editar preferências. Após se definir qual método para backup, usamos a opção de backup, ao iniciar, o taper pede um nome para o backup, e um para o volume, em seguida mostra uma arvore de diretórios, no qual fazemos a escolha dos arquivos pressionando a tecla I, e ao finalizar a escolha, usamos atecla f para inciar a cópia de backup. Para restaurar o backup, utiliza-se o o menu Restore, e escolhe-se qual o conjunto de backup deseja-se restaurar, e o diretório onde quer que seja restaurado, a seguir, selecioa-se os arquivos para restauracão com a tecla I, e usa-se a tecla F inicar o restore. Dentro do taper, pode-se pressionar a barra de espaço, para verificar quais os comandos válidos. - i ou I - Seleciona arquivos - f ou F - Inicia o processo - u ou U - retira arquivo da lista - q - Aborta