12.9. Considerações básicas sobre backup

Os três mais utilizados programas de backup são dump(8), tar(1), e cpio(1).

12.9.1. Dump e Restore

Os programas tradicionais de backup do UNIX® são o dump e o restore. Eles operam a controladora como se esta fosse uma coleção de blocos de discos, abaixo da abstração de arquivos, links e diretórios que são criadas pelos sistemas de arquivos. O dump realiza o backup de todo um sistema de arquivos em um dispositivo. Ele não tem habilidade de realizar backup somente de uma parte de um sistema de arquivos ou uma árvore de diretórios que envolva mais de um sistema de arquivos. O dump não grava os arquivos em diretórios numa fita, ele grava tudo de maneira direta (raw) em blocos de dados que compõe os arquivos e diretórios.

Nota: Se você utilizar o dump no seu diretório root, você não realizaria o backup do /home, /usr e muitos outros subdiretórios desde que estes sejam tipicamente pontos de montagem para outros sistemas de arquivos, ou ainda links entre estes sistemas de arquivos.

O dump tem uma artimanha que vem desde primeiros dias na Versão 6 do AT&T UNIX (aproximadamente 1975). Os parâmetros padrões são adequados para fitas de 9 trilhas (6250 bpi), não para as mídias de alta-densidade disponíveis hoje em dia (up to 62,182 ftpi). Estes padrões devem ser sobreescritos na linha de comando para que seja utilizada a capacidade das atuais controladoras de fita.

Também é possível realizar backup dos dados através da rede para um dispositivo de backup conectado em um outro computador com o rdump e o rrestore. Ambos os programas tem sua confiança baseadas no rcmd e no ruserok para o acesso à controladora de fita remota. Portanto, o usuário que irá realizar o backup deverá estar listado no arquivo .rhosts no computador remoto. Os argumentos para o rdump e para o rrestore devem ser adequados para o computador remoto. Quando estiver fazendo o rdump de um computador com FreeBSD para uma controladora de fita Exabyte conectada numa estação Sun chamada komodo, use:

# /sbin/rdump 0dsbfu 54000 13000 126 komodo:/dev/nsa8 /dev/da0a 2>&1

Cuidado: há implicações na segurança do sistema permitir a autenticação pelo .rhosts. Avalie a sua situação cuidadosamente.

Também é possível utilizar o dump e o restore numa confecção mais segura através do ssh.

Exemplo 12-1. Utilizando o dump sobre o ssh

# /sbin/dump -0uan -f - /usr | gzip -2 | ssh1 -c blowfish \
          targetuser@targetmachine.example.com dd of=/mybigfiles/dump-usr-l0.gz

12.9.2. tar

O tar(1) também tem sua data de volta a Versão 6 of AT&T UNIX (aproximadamente 1975). O tar opera em cooperação com o sistema de arquivos; o tar grava os arquivos e diretórios na fita. O tar não suporta a gama enorme de opções disponíveis no cpio(1), mas o tar não requere o pouco usual esquema de comandos com redirecionamento que o cpio usa.

A maioria das versões do tar não suportam backups através da rede. A versão GNU do tar, que é a versão utilizada pelo FreeBSD, suporta dispositivos remotos utilizando a mesma sintaxe do rdump. Para utilizar o tar de um computador com FreeBSD para uma controladora de fita Exabyte conectada numa estação Sun chamada komodo, use:

# /usr/bin/tar cf komodo:/dev/nsa8 . 2>&1

Para as versões sem suporte a dispositivos remotos, é possível usar um redirecionamento com o rsh para enviar os dados para uma controladora de fita remota.

# tar cf - . | rsh hostname dd of=tape-device obs=20b

Se você está preocupado com a segurança no que envolve realizar backups através da rede você deveria utilizar o ssh ao invés do rsh.

12.9.3. cpio

O cpio(1) é o programa original do UNIX para a troca de arquivos entre máquinas por meio de mídias magnéticas. O cpio tem opções (entre muitas outras) de realizar byte-swapping, gravando um bom número de sistemas de arquivos de diferentes formatos, e permitindo o redirecionamento dos dados para outros programas. Esta última funcionalidade faz do cpio uma excelente escolha para criar mídias de instalações. O cpio não sabe como andar nos diretórios da árvore de diretórios e uma lista dos arquivos deve ser passada através da stdin.

Ocpio não suporta a realização de backups através da rede. Você pode utilizar um redirecionamento e o rsh para enviar os dados para uma controladora de fita remota.

# for f in directory_list; do
find $f >> backup.list
done
# cpio -v -o --format=newc < backup.list | ssh user@host "cat > backup_device"

Onde o directory_list é a lista de diretórios que você quer adicionar ao seu backup, user@host é a combinação usuário/computador que irá realizar o backup, e backup_device é onde os backups devem ser escritos (e.g., /dev/nsa0).

12.9.4. pax

O pax(1) é a resposta do IEEE/POSIX® para o tar e o cpio. Sobre os anos de várias versões do tar e do cpio estão algumas incompatibilidades. Então para sair da briga pela padronização completa deles, o POSIX criou um novo utilitário de arquivação. O pax tenta ler e gravar nos mais mais variados formatos tanto do cpio quanto do tar, adicionado novos formatos por si, inclusive. Sua maneira de comandar é mais semelhante ao cpio que ao tar.

12.9.5. Amanda

O Amanda (Advanced Maryland Network Disk Archiver) é um sistema de backup cliente/servidor, melhor que um único programa. Um servidor Amanda irá realizar numa única controladora de fita o backup de qualquer número de computadores que tenham o cliente do Amanda e uma conexão de com o servidorAmanda. Um problema comum em locais com um grande número de discos é que a quantidade de tempo requerida para o backup dos dados diretamente na fita excede a quantidade de tempo para a tarefa. O Amanda resolve este problema. O Amanda pode utilizar um disco auxiliar para realizar o backup de diversos sistemas de arquivos ao mesmo tempo. O Amanda cria ``conjuntos de arquivos '': um grupo de fitas utilizadas sobre o tempo para criar os bsackups completos de todos os sistemas de arquivos listados no arquivo de configuração do Amanda. O ``conjunto de arquivos'' também pode conter backups incrementais (ou diferenciais) noturnos de todos os sistemas de arquivos. Para restaurar um sistema de arquivos é necessário o backup completo mais recente e os incrementais.

O arquivo de configurações provê um controle total da realização dos backups e do tráfico de rede que o Amanda gera. O Amanda utilizará qualquer um dos programas de backup citados para gravar os dados nas fitas. O Amanda está disponível também como um port ou como pacote, porém ele não é instalado por padrão.

12.9.6. Não fazer nada

``Não fazer nada'' não é um programa de computador mas sim a mais utilizada estratégia de backup. Não há custos iniciais. Não há um agendamento de backup a ser cumprido. Apenas diga não. Se alguma coisa acontecer aos seus dados dê um sorriso malicioso e dê cria neles!

Se seu tempo e seus dados são um pouquinho mais que nada, então ``Não fazer nada'' é o mais adequado programa de backup para o seus computados. Mas cuidado, o UNIX é uma ferramenta útil, você deve encontrar num intervalo de seis meses uma coleção de arquivos que tenham valor para você.

``Não fazer nada'' é o método de backup correto para /usr/obj e outras árvores de diretórios que podem ser criadas exatamente como eram no seu computador. Um exemplo são os arquivos HTML ou PostScript® das versões deste Handbook. Estes documentos foram criados de arquivos no formato SGML. Criar backups deles não é necessário. Os arquivos SGML tem backups realizados regularmente.

12.9.7. Qual o melhor programa de backup?

A vez é do dump(8), pelos resultados obtidos do torturantes testes que Elizabeth D. Zwicky fez a todos os programas discutidos aqui. A escolha limpa para preservar todos os seus dados e suas peculiaridades do sistema de arquivos UNIX é o dump. Elizabeth criou um sistema de arquivos contendo uma grande variedade de condições não usuais (e algumas nem tão pouco usuais assim) e realizou testes em cada um dos programas realizando backup e restaurando o sistema de arquivos criado. As peculiaridades incluídas: arquivos com buracos, arquivos buracos e blocos nulos, arquivos com caracteres engraçados e estranhos em seus nomes, arquivos que não podem ser lidos ou gravados, arquivos de dispositivos, arquivos que mudam de tamanho durante o backup, arquivos que são criados e apagados durante o backup entre outros. Ela apresentou os resultados na LISA V em outubro de 1991. Visite torture-testing Backup and Archive Programs.

12.9.8. Procedimento de restauração de emergência

12.9.8.1. Antes do disastre

Existem pelo menos quatro passos que são necessários para preparar caso ocorra um desastre..

Primeiro, imprima os rótulos de discos de cada um dos discos que você possui (e.g. disklabel da0 | lpr), sua tabela de sistemas de arquivos (/etc/fstab) e todas as mensagens de inicialização, isso tudo em duas cópias.

Segundo, determine quais serão os disquetes de boot e de manutenção (boot.flp e fixit.flp), tendo todos os arquivos para os seus dispositivos. A maneira mais fácil de verificar é reiniciar sua máquina com o disquete de boot na unidade e checar as mensagens emitidas. Se todos os arquivos de dispositivos são listados e funcionais, passe ao passo três.

Senão, você terá que criar dois disquetes de boot personalizados contendo um kernel que possa montar todos os seus discos e acessar a fita de backup na controladora. Este disquetes devem conter: fdisk, disklabel, newfs, mount, e qualquer programa de backup, de preferência o que você usa. Este programas deverão ser gerados de maneira estática. Se você utilizar o dump, o disquete deverá conter o restore.

Terceiro, crie backups nas fitas regularmente. Qualquer mudança que for feita após o último backup será perdida. Proteja as fitas de backup ativando a trava contra gravação.

Quanto, teste os disquetes (mesmo o boot.flp e o fixit.flp ou od dois disquetes de boot personalizados que você fez no segundo passo.) e as fitas de backup. Tome nota do processo. Guarde estas notas com o disquete bootável, as etiquetas e as fitas de backup. Você poderá estar tão perturbado no momento da restauração que as notas irão prevenir que você destrua as fitas de backup (Como? no lugar de tar xvf /dev/sa0, você acidentalmente digita tar cvf /dev/sa0 e sobreescreve sua fita de backup).

Para adicionar segurança ao processo, faça disquetes inicializáveis e duas fitas de backup por vez. Armazene cada uma delas em locais remotos diferentes. Um local remoto não é no subsolo do mesmo prédio. Um certo número de empresas no World Trade Center aprendeu esta lição do modo mais difícil. Um local remoto deve ser fisicamente separado de computadores e discos por uma distância significante.

Exemplo 12-2. Um Script para a criação de disquetes de inicialização

#!/bin/sh
#
# Criar um disquete para restaura&ccedil;&atilde;o
#
# Formatar o disquete
#
PATH=/bin:/sbin:/usr/sbin:/usr/bin

fdformat -q fd0
if [ $? -ne 0 ]
then
     echo "Disquete problem&aacute;tico, insira um novo"
     exit 1
fi

# Colocar os blocos de boot no disquete
#
disklabel -w -B /dev/fd0c fd1440

#
# Criar a parti&ccedil;&atilde;o no disquete
#
newfs -t 2 -u 18 -l 1 -c 40 -i 5120 -m 5 -o space /dev/fd0a

#
# Montar o novo disquete
#
mount /dev/fd0a /mnt

#
# Criar diret&oacute;rios necess&aacute;rios
#
mkdir /mnt/dev
mkdir /mnt/bin
mkdir /mnt/sbin
mkdir /mnt/etc
mkdir /mnt/root
mkdir /mnt/mnt          # Para a parti&ccedil;&atilde;o root
mkdir /mnt/tmp
mkdir /mnt/var

#
# Popular os diret&oacute;rios
#
if [ ! -x /sys/compile/MINI/kernel ]
then
     cat << EOM
O kernel MINI n&atilde;o existe, por favor, crie um.
Veja aqui um exemplo para o arquivo de configura&ccedil;&atilde;o:
#
# MINI -- Um kernel para usar o FreeBSD num disquete.
#
machine         "i386"
cpu             "I486_CPU"
ident           MINI
maxusers        5

options         INET                    # needed for _tcp _icmpstat _ipstat
                                        #            _udpstat _tcpstat _udb
options         FFS                     #Berkeley Fast File System
options         FAT_CURSOR              #block cursor in syscons or pccons
options         SCSI_DELAY=15           #Be pessimistic about Joe SCSI device
options         NCONS=2                 #1 virtual consoles
options         USERCONFIG              #Allow user configuration with -c XXX

config          kernel  root on da0 swap on da0 and da1 dumps on da0

device          isa0
device          pci0

device          fdc0    at isa? port "IO_FD1" bio irq 6 drq 2 vector fdintr
device          fd0 at fdc0 drive 0

device          ncr0

device          scbus0

device          sc0 at isa? port "IO_KBD" tty irq 1 vector scintr
device          npx0    at isa? port "IO_NPX" irq 13 vector npxintr

device          da0
device          da1
device          da2

device          sa0

pseudo-device   loop            # required by INET
pseudo-device   gzip            # Exec gzipped a.out's
EOM
     exit 1
fi

cp -f /sys/compile/MINI/kernel /mnt

gzip -c -best /sbin/init > /mnt/sbin/init
gzip -c -best /sbin/fsck > /mnt/sbin/fsck
gzip -c -best /sbin/mount > /mnt/sbin/mount
gzip -c -best /sbin/halt > /mnt/sbin/halt
gzip -c -best /sbin/restore > /mnt/sbin/restore

gzip -c -best /bin/sh > /mnt/bin/sh
gzip -c -best /bin/sync > /mnt/bin/sync

cp /root/.profile /mnt/root

cp -f /dev/MAKEDEV /mnt/dev
chmod 755 /mnt/dev/MAKEDEV

chmod 500 /mnt/sbin/init
chmod 555 /mnt/sbin/fsck /mnt/sbin/mount /mnt/sbin/halt
chmod 555 /mnt/bin/sh /mnt/bin/sync
chmod 6555 /mnt/sbin/restore

#
# Criar os n&oacute;s de dispositivos
#
cd /mnt/dev
./MAKEDEV std
./MAKEDEV da0
./MAKEDEV da1
./MAKEDEV da2
./MAKEDEV sa0
./MAKEDEV pty0
cd /

#
# Criar a tabela de sistema de arquivos m&iacute;nimo
#
cat > /mnt/etc/fstab <<EOM
/dev/fd0a    /    ufs    rw  1  1
EOM

#
# Criar um arquivo passwd m&iacute;nimo
#
cat > /mnt/etc/passwd <<EOM
root:*:0:0:Charlie &:/root:/bin/sh
EOM

cat > /mnt/etc/master.passwd <<EOM
root::0:0::0:0:Charlie &:/root:/bin/sh
EOM

chmod 600 /mnt/etc/master.passwd
chmod 644 /mnt/etc/passwd
/usr/sbin/pwd_mkdb -d/mnt/etc /mnt/etc/master.passwd

#
# Desmontar o disquete e informar ao usu&aacute;rio
#
/sbin/umount /mnt
echo "O disquete foi desmontado e esta pronto para o uso."

12.9.8.2. Após o disastre

A questão chave é: seu equipamento sobreviveu? Você tem realizado backups regulares para não se preocupar com problemas de software.

Se o equipamento foi danificado, as partes danificadas devem ser trocadas antes de tentar usar o computador.

Se seu equipamento está funcional, verifique seus disquetes. Caso você esteja utilizando um disquete inicializável personalizado, entre no sistema em modo mono-usuário (digite -s no prompt boot:). Passe adiante no próximo parágrafo.

Se você estiver utilizando os disquetes boot.flp e fixit.flp, continue lendo. Insira o disquete boot.flp na primeira unidade de disquetes e realize o boot no computador. O menu de instalação original aparecerá na tela. Selecione a opção Fixit--Repair mode with CDROM or floppy.. Insera o disquete fixit.flp quando for solicitado. O restore e outros programas que você precisa estão localizados em /mnt2/stand.

Restaurar cada sistema de arquivos separadamente.

Tente o mount (e.g. mount /dev/da0a /mnt) na partição raiz do seu primeiro disco Se o seu rótulo de dsico foi danificado, use o disklabel para reparticionar e rotular o disco da mesma maneira que você tem salva e impressa. Use o newfs para recriar os sistemas de arquivos. Remonte a partição raiz do disquete com direitos de gravação(mount -u -o rw /mnt). Utilize seu programa e fitas de backup para restaurar os dados dos sistemas de arquivos (e.g. restore vrf /dev/sa0). Desmonte o sistema de arquivos (e.g. umount /mnt). Repita o processo para cada um dos sistemas de arquivos danificados.

Uma vez que seu sistema está em execução, realize backup dos seus dados em novas fitas. Qualquer parada ou perda de dados pode acontecer novamente sem que a causa seja conhecida. Gastar mais uma hora agora pode salvá-lo do estresse mais tarde.

Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Para perguntas sobre FreeBSD, leia a documentação antes de contatar <questions@FreeBSD.org>.
Para perguntas sobre esta documentação, envie e-mail para <doc@FreeBSD.org>.