(M)  s i s t e m a   o p e r a c i o n a l   m a g n u x   l i n u x ~/ · documentação · suporte · sobre

  Página seguinte Página anterior Índice

628. 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

ftp://metalab.enc.edu:/pub/Linux/system/Backup/backup-1.03.tar.gz
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.

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:

ftp://metalab.unc.edu/pub/Linux/kernel/tapes/ftape-2.05.tar.gz
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, deve-se 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:

/tape144/bin/dialog
/tape144/bin/elvis
/tape144/bin/vi
/tape144/boot/ftape.o

Agora, deve ser criado um novo arquivo:

/tape144/etc/exports
que contém a seguinte linha:
/mnt    msdos(ro)
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 tenha que se basear 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:

128.100.75.114  caliban.physics.utoronto.ca caliban caliban.physics
128.100.75.111  ariel.physics.utoronto.ca ariel ariel.physics

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 /tape144/etc/inetd.conf para:

shell   stream  tcp     nowait  root    /usr/etc/tcpd   /usr/etc/in.rshd

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:

/etc/ifconfig eth0 128.100.75.111 broadcast 128.100.75.0 netmask 255.255.255.0
/etc/route add -net 128.100.75.0 netmask 255.255.255.0

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:

linux root

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:

in.rshd
rpc.mountd
rpc.nfsd
rpc.portmap
services
tcpd

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

#! /bin/sh

/bin/sh /etc/rc.d/rc.inet1
/bin/sh /etc/rc.d/rc.inet2

/bin/mount linux:/nfs /mnt
/bin/insmod /mnt/ftape.o

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

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

#! /bin/sh 

/bin/sh /etc/rc.d/rc.inet1
/bin/sh /etc/rc.d/rc.inet2

mount linux:/mnt /mnt
/bin/insmod /mnt/ftape.o

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:

Para uma recuperação completa de um disco rígido danificado
Inicialize a  máquina Linux com o disco SAR  #1  #2
e digite o seguinte:

   /bin/sh /etc/rc.d/rc.inet1-l
   /bin/sh /etc/rc.d/rc.inet2

   /usr/etc/rpc.portmap
   /usr/etc/rpc.mountd
   /usr/etc/rpc.nfsd

Em seguida, insira o disco SAR #3 e digite:

   mount /dev/fd0 /mnt

Crie um novo ponto de montagem  com:

   mkdir /mnt2

e monte a sua partição de disco rígido Linux neste ponto.
Talvez você tenha que reformatar a partição antes. Se for necessário, siga as instruções no COMO FAZER da Instalação do Linux . Os discos SAR contêm todos os arquivos necessários para a reformatação.

Finalmente, use os discos SAR#1 e SAR#2 para inicializar a máquina MS-DOS e execute o programa /bin/msdosset nesta máquina.
Tardará algo como um minuto para executar este programa, porque ele obtém um arquivo NSF a partir do dispositivo de disquete. Então, seja paciente.
Agora, recupere os arquivos a partir da fita em /mnt2 na máquina Linux.

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.

*** netbackup.orig      Mon Jan  9 17:22:32 1995
--- netbackup   Mon Jan  9 17:23:25 1995
***************
*** 35,41 ****
                  "'mknod", devname, "p'");
      exec ("su -", USERNAME, "-c",
                  "'rsh ", REMOTE_HOST, 
!                       "\"dd", "of=" REMOTE_DEVICE, "obs=20k", "conv=sync\"",
                        "<", devname,
                "'&"
         );
--- 35,41 ----
                  "'mknod", devname, "p'");
      exec ("su -", USERNAME, "-c",
                  "'rsh ", REMOTE_HOST, 
!                       "\"dd", "of=" REMOTE_DEVICE, "\"",
                        "<", devname,
                "'&"
         );
***************
*** 50,56 ****
                  "'mknod", devname, "p'");
      exec ("su", USERNAME, "-c", 
                  "'rsh ", REMOTE_HOST, 
!                       "\"dd", "if=" REMOTE_DEVICE, "ibs=20k", "conv=sync\"",
                        ">", devname,
                "'&"
         );
--- 50,56 ----
                  "'mknod", devname, "p'");
      exec ("su", USERNAME, "-c", 
                  "'rsh ", REMOTE_HOST, 
!                       "\"dd", "if=" REMOTE_DEVICE, "\"",
                        ">", devname,
                "'&"
         );

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:

/nfs

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:

/nfs    msdos(ro)

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:

mknod /tmp/tapepipe p
rsh msdos dd of=/dev/ftape < /tmp/tapepipe &
localbackup /tmp/tapepipe

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 comandos 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.

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 inicializadas, 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:
    rsh -n msdos dd if=/dev/ftape | afio -i -v -Z -c 1024 -
    
    ou
    rsh -n -l usuariodefita msdos dd if=/dev/ftape | afio -i -v -Z -c 1024 -
    
    ou
    mknod /tmp/backpipe p
    rsh -n msdos dd if=/dev/ftape >> /tmp/backpipe &
    afio -i -v -Z -c 1024 /tmp/backpipe
    
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.
Página seguinte Página anterior Índice