próximo acima anterior sumário índice
Next: Notas Up: Como Fazer Cópias de Previous: Prefácio/Introdução   Sumário   Índice Remissivo

A técnica

Nesta descrição, vou me referir a duas máquinas como ``msdos'' e ``linux''. ``msdos'' é o nome da máquina que tem o dispositivo de fita e opera normalmente o MS-DOS (ou Windows).``linux'' é a máquina Linux de cujo disco se deseja efetuar cópias de segurança ou recuperar arquivos a partir do dispositivo de fita. Para simplificar, vou referir-me à primeira máquina como ``msdos'', mesmo quando esta seja inicializada e operando dentro de um Linux. A partir disto, todos os nomes dos caminhos neste documento devem ser considerados como sendo relativos à máquina Linux com os discos Pesquisa-e-Salvamento (BES) montados em algum lugar no sistema. Isto significa que o arquivo /etc/passwd é o arquivo de senhas no disco rígido da máquina Linux, enquanto, por exemplo /tape144/etc/passwd é o arquivo correspondente em disquete.

Estou usando os programas de geração de cópias de segurança de Karel Kubats, versão 1.03, disponíveis em
\begin{tscreen}
\url{ftp://metalab.enc.edu:/pub/Linux/system/Backup/backup-1.03.tar.gz}\end{tscreen}

Neste documento, vou me referir a eles simplesmente como ``os programas de cópia de segurança''. Você não precisa usar estes programas para gravar suas próprias cópias de segurança. Particularmente prefiro estes programas porque eles usam o comando afio para gerar um arquivo descompactado de arquivos compactados, ao invés de um arquivo compactado de arquivos descompactados. O primeiro é mais seguro, caso haja um erro de leitura na mídia durante a restauração. Karel não está mais suportando estes programas, mas sim produziu agora o 'tob', ou cópias de segurança orientadas a fitas. Embora eu não tenha utilizado o novo pacote, isto não faz uma diferença significativa ao procedimento aqui descrito.

ftape!modulo@módulo

Primeiramente, obtenha o módulo ftape. Ele é parte de todos os kernels modernos. Porém, se você estiver usando um kernel antigo, poderá encontrar o módulo em:
\begin{tscreen}
\nameurl{ftp://metalab.unc.edu/pub/Linux/kernel/tapes/ftape-2.05.tar.gz}{}
\end{tscreen}

A seguir, pegue um disco de inicialização Linux e crie uma imagem em um disquete de 3"1/2.

O módulo ftape somente funcionará se ele for instalado em um kernel que esteja sendo utilizado ao ser compilado. Então, tem-se que gerar um novo kernel com suporte à ftape e à rede. Neste estágio, leia as instruções que aparecem com o arquivo ftape para maiores informações. Lembre-se que o kernel gerado deve suportar placas Ethernet tanto na máquina Linux quanto na máquina MS-DOS.

Copie a nova imagem do kernel criada recentemente sobre uma do disco de inicialização da Rede. Use /bin/cp. Não crie um disco de inicialização com o comando ``dd'' como seria o usual para se criar uma imagem de kernel inicializável. Proteja o disco de inicialização contra gravação e etiquete-o: SAR#1.

Agora, monte o disco raiz tape144 da distribuição Slackware. Assumiremos que o ponto de montagem seja /tape144, para evitar confusão nos nomes dos arquivos. Precisamos liberar algum espaço nele, então devem ser apagados os seguintes arquivos:
\begin{tscreen}
\begin{verbatim}/tape144/bin/dialog
/tape144/bin/elvis
/tape144/bin/vi
/tape144/boot/ftape.o\end{verbatim}\end{tscreen}

Agora, deve ser criado um novo arquivo:
\begin{tscreen}
\begin{verbatim}/tape144/etc/exports\end{verbatim}\end{tscreen}

que contém a seguinte linha:
\begin{tscreen}
\begin{verbatim}/mnt msdos(ro)\end{verbatim}\end{tscreen}

Aqui, ``msdos'' deve ser trocado com o nome ou endereço IP da máquina MS-DOS que tem o dispositivo de fita instalado.

Então, para que não se tenha que basear-se em nomes de servidor, devem ser acrescentadas linhas ao arquivo /tape144/etc/hosts com os nomes e números IP das máquinas Linux e MS-DOS. Por exemplo, o meu contém as duas linhas seguintes:
\begin{tscreen}
\begin{verbatim}128.100.75.114 caliban.physics.utoronto.ca cal...
....75.111 ariel.physics.utoronto.ca ariel ariel.physics\end{verbatim}\end{tscreen}

Agora, existe um problema com a configuração do inetd. Temos que informar o nome completo do caminho do servidor rsh. Substitua a linha 19 de para:


\begin{tscreen}
{\small\begin{verbatim}shell stream tcp nowait root /usr/etc/tcpd /usr/etc/in.rshd\end{verbatim}}
\end{tscreen}

Acrescente informações de roteamento da rede local para /tape144/etc/rc.d/rc.inet1 para habilitar a máquina MS-DOS a usar a rede. O formato depende da configuração local de rede. Pode-se simplesmente copiar o formato apropriado do arquivo Linux /etc/rc.d/rc.inet1. Para a minha rede, as linhas que tiveram que ser acrescentadas foram:


\begin{tscreen}
\begin{verbatim}/etc/ifconfig eth0 128.100.75.111 broadcast 1...
...etc/route add -net 128.100.75.0 netmask 255.255.255.0\end{verbatim}\end{tscreen}

O endereço IP na entrada ifconfig é o da máquina MS-DOS.

Agora, copie este arquivo dentro de /tape144/etc/rc.d/rc.inet1-l, e troque o endereço IP no novo arquivo para utilizar primeiramente os dados da máquina Linux ao invés da máquina MS-DOS.

Em seguida, corte as linhas 3 a 11 do /tape144/etc/rc.local. Trata-se de condição que executa os arquivos rc.inet*. No nosso caso não necessitamos desta execução durante a inicialização do sistema.

Crie um novo arquivo: /tape144/root/.rhosts que contenha a linha:


\begin{tscreen}
\begin{verbatim}linux root\end{verbatim}\end{tscreen}

aqui, novamente, ``linux'' é substituído pelo nome completo da máquina (inclusive domínio) ou o endereço IP da máquina Linux.

Preencha o campo de senha no /tape144/etc/passwd do superusuário para evitar que as pessoas acessem a máquina MS-DOS enquanto se esteja executando cópias de segurança. Pode-se fazer isto copiando o campo correspondente da máquina Linux, do arquivo /etc/passwd.

Copie /usr/bin/rsh para /tape144/usr/bin.

Copie os seguintes arquivos a partir de /usr/etc para /tape144/usr/etc:


\begin{tscreen}
\begin{verbatim}in.rshd
rpc.mountd
rpc.nfsd
rpc.portmap
services
tcpd\end{verbatim}\end{tscreen}

Crie um novo programa chamado /tape144/bin/tapesetup, que consista do seguinte: (troque ``linux'' para refletir o nome da sua máquina Linux ).


\begin{tscreen}
\begin{verbatim}...

Note-se que os kernels mais novos não irão requerer a linha insmod.

Em seguida, crie outro programa novo chamado /tape144/bin/msdosset, como se segue: (Troque ``linux'' para refletir o nome da sua máquina).


\begin{tscreen}
\begin{verbatim}...

Como acima, os kernels mais novos não irão requerer uma linha insmod.

Criar um arquivo texto chamado /tape144/root/notes, o qual deve conter as seguintes informações úteis sobre uma recuperação total:
\begin{tscreen}
{\small\begin{verbatim}Para uma recuperação completa de um dis...
...quivos a partir da fita em /mnt2 na máquina
Linux.\end{verbatim}}
\end{tscreen}

Caso se esteja usando os programas de cópias de segurança, será necessário copiar o programa 'afio' para o subdiretório /tape144/local/bin. Não é necessário ter-se os demais arquivos de programas de cópias de segurança nos discos de recuperação. Um arquivo pode ser recuperado usando somente 'afio' e 'gzip'.

Não pude usar os programas de cópia de segurança do modo que eles foram gerados. O arquivo em fita parece ser construído de uma maneira correta, mas ele é irrecuperável. Descobri que removendo o tamanho do bloco e proposições de conversões permitem que ele funcione corretamente. Aqui está o ajuste para o programa ``netbackup''. Esta alteração deve ser aplicada à cópia em disco rígido da máquina Linux assim como à cópia nos discos SAR.


\begin{tscreen}
{\scriptsize\begin{verbatim}*** netbackup.orig Mon Jan 9 17:22...
...OTE_DEVICE, ''\uml '',
''>'', devname,
'''&''
);\end{verbatim}}
\end{tscreen}

Bem, concluímos o disco SAR #2. Proteja o disquete contra gravação.

A seguir monte um disco vazio formatado (crie-o com fdformat e mkfs). Copie o arquivo ftape.o nele e etiquete-o como SAR#3. Por alguma razão, as coisas não funcionam bem caso se proteja este disco contra gravação, então deve-se deixar a gravação habilitada.

Na máquina Linux, crie um novo diretório para servidor de arquivos NFS. Sugiro a criação do diretório:


\begin{tscreen}
\begin{verbatim}/nfs\end{verbatim}\end{tscreen}

Copie o ftape.o (sem os simbólicos, cerca de 500 kB) dentro deste subdiretório.

Crie uma entrada no seu arquivo de exportação Linux /etc/exports:
\begin{tscreen}
\begin{verbatim}/nfs msdos(ro)\end{verbatim}\end{tscreen}

Note que todos os arquivos no seu diretório NFS e seus subdiretórios não estão seguros. Alguém pode inicializar a máquina MS-DOS no modo Linux com estes discos de inicialização e montar este diretório. Então tenha a certeza de que não haja nada sensível no subdiretório NFS.

Reinicie seu servidor NFS, rpc.mountd e rpc.nfsd. Eles parecem não aceitar muito bem o comando SIGHUP. Então finalize-os e reinicialize os servidores. Caso eles não estejam sendo ativados no /etc/rc.d/rc.inet2, pode-se fazê-lo agora.

OK, agora nós estamos prontos para gerar as cópias de segurança e recuperação. Para fazer uma cópia total de segurança da máquina Linux, inicialize a máquina MS-DOS com SAR#1. Quando estiver pronto para o segundo disco, carregue SAR#2. Registre-se como superusuário e execute o programa: /bin/tapesetup. Saia do computador MS-DOS. Se você estiver usando programas de cópia de segurança, o comando netbackup funcionará agora. Pode-se usar também o parâmetro ``-f msdos:/dev/ftape'' com os utilitários GNU tar, cpio, ou mt, e gerar uma cópia de segurança desta forma. Caso se tenha um programa de cópia de segurança, que só é capaz de escrever em um arquivo local, deve-se adotar o seguinte procedimento:

Assuma que este programa de cópia de segurança seja chamado localbackup e escreva no arquivo representado pelos argumentos de linha de comando:
\begin{tscreen}
\begin{verbatim}mknod /tmp/tapepipe p
rsh msdos dd of=/dev/ftape < /tmp/tapepipe &
localbackup /tmp/tapepipe\end{verbatim}\end{tscreen}

Após a conclusão o arquivo /tmp/tapepipe deve ser apagado.

Note-se que está sendo usado 'rsh' para o superusuário na máquina MS-DOS. Isso funcionará corretamente caso haja uma entrada adequada em .rhosts. A configuração no disco 'tape144' permite que seja executado o interpretador de comandos remotos rsh para o superusuário, porém não permite comando como telnet ou rlogin, e os acessos ao sistema estarão restritos à console. Este é um procedimento de segurança indicado.

Caso se esteja preocupado sobre o arquivo raiz .rhost, pode-se criar um novo usuário em SAR#2, ``usuariodefita'', com permissões para operar a unidade de fita mas não os discos (deve-se criar um grupo de usuários e colocar "usuariodefita" nele, e então adicionar os programas chown e chmod, /dev/rft* e /dev/nrft*). O programa de cópia de segurança deve então reconhecer o rsh para este usuário além do superusuário. Obviamente, agora deve-se ter no arquivo .rhosts o usuário ~usuariodefita em SAR#2. Optei por esta opção ao invés de usar o superusuário em .rhosts.

disco rigido danificado@disco rígido danificado

Finalmente, seguem as instruções para uma completa recuperação para um disco rígido danificado. Isto supõe que a partição Linux ficou completamente irrecuperável. Se necessário, reformate a partição conforme descrito no Como Fazer da Instalação Linux. Inicialize a máquina Linux do disco SAR #1. Após insira o disco #2. Agora, siga as instruções no arquivo /root/notes (ou seja /tape144/root/notes quando foi montado na máquina Linux). Assim que ambas as máquinas tenham sido iniciadas, execute a rotina de recuperação necessária. Caso se esteja utilizando os programas de cópia de segurança pode-se observar o seguinte:

  1. mude o diretório para o ponto de montagem da partição do disco rígido que se está recuperando.
  2. se qualquer dos volumes montados estiverem na cópia de segurança e se deseja recuperá-los, devem ser criados os pontos de montagem dentro da partição do disco rígido e montados os volumes.
  3. Execute o comando:
    \begin{tscreen}
{\small\begin{verbatim}rsh -n msdos dd if=/dev/ftape \vert afio -i -v -Z -c 1024 -\end{verbatim}}
\end{tscreen}

    ou
    \begin{tscreen}
{\small\begin{verbatim}rsh -n -l usuariodefita msdos dd if=/dev/ftape \vert
afio -i -v -Z -c 1024 -\end{verbatim}}
\end{tscreen}

    ou
    \begin{tscreen}
{\small\begin{verbatim}mknod /tmp/backpipe p
rsh -n msdos dd...
...tmp/backpipe &
afio -i -v -Z -c 1024 /tmp/backpipe\end{verbatim}}
\end{tscreen}

Isso faz com que a fita seja lida da máquina remota, o resultado seja colocado na saída padrão de onde afio lê os resultados. O indicador '-i' indica que devem ser recuperados os arquivos relativos ao diretório de trabalho atual (o qual é o raiz da partição do disco rígido). '-v' indica a apresentação de mensagens, listando os arquivos à medida que eles são recuperados. '-Z' informa ao afio que este é um arquivo de arquivos compactados individualmente. '-c 1024' indica o uso de um buffer de leitura e gravação de 5 MB para evitar um excesso de rebobinamento de fita.


próximo acima anterior sumário índice
Next: Notas Up: Como Fazer Cópias de Previous: Prefácio/Introdução   Sumário   Índice Remissivo
Cyro Mendes de Moraes Neto 1999-12-30