Cópias de Segurança com MSDOS - mini COMO FAZER Christopher Neufeld, neufeld@physics.utoronto.ca v, 5 de Agosto de 1997 Este COMO FAZER descreve como usar um dispositivo de fita compatível com o LINUX instalado em uma máquina MS-DOS para fazer cópias de segurança do sistema de arquivos de uma máquina Linux. ______________________________________________________________________ Índice geral 1. Prefácio/Introdução 2. A técnica 3. Notas 4. Direitos autorais ______________________________________________________________________ 11.. PPrreeffáácciioo//IInnttrroodduuççããoo Primeiramente fiz uma pesquisa na Internet sobre como fazer uma cópia de segurança de um máquina Linux para um dispositivo de fita Colorado Jumbo 250 numa máquina MS-DOS. Pelo email recebido este parecia ser um problema freqüentemente pesquisado. Agora que descobri como fazê-lo, estou divulgando o método. Caso alguém queira trocar informações para aprimorar este método dentro deste documento COMO FAZER, por favor me comunique. Gostaria de agradecer a Jim Nanc (jlnance@isscad.com) por salientar que uma máquina MS-DOS não precisa ser sempre uma máquina MS-DOS. Esta técnica deve funcionar também para qualquer outro dispositivo de fita suportado pelo módulo ftape e pelos dispositivos de fitas SCSI com substituições compatíveis (por exemplo trocando /dev/st0 por /dev/ftape). Os critérios que utilizei foram tais que as configurações resultantes deveriam ser tão seguras quanto possível, deveriam ser muito simples e ocupar um espaço pequeno ou nenhum espaço no disco rígido da máquina MS-DOS. Deveria também ser possível a recuperação das piores corrupções do sistema de arquivos, incluindo até a perda total do disco rígido, exigindo a recuperação de todo um sistema de arquivos Linux. A técnica aqui descrita não usa espaço do disco rígido na máquina MS-DOS, ainda que ela exija que esta máquina possua um endereço IP#. São necessários três disquetes 1.44MB formatados e em branco. 22.. AA ttééccnniiccaa 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 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: 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. 33.. NNoottaass Os comandos listados no arquivo /tape144/root/notes poderiam ser executados a partir de um programa. Quando tentei inicialmente obtive alguns erros de configuração rpc. Suspeito que a causa esteja no funcionamento muito rápido destes comandos e o programa "portmapper" não estava adequadamente instalado. Descobri que digitando-se a seqüência manualmente provocava um funcionamento adequado, e a partir de então tenho recomendado este método. Esta configuração me parece segura. Note que alguém ainda pode ter acesso a todos os arquivos se eles forem ao dispositivo de fita e retirarem a fita antes que o administrador a retire. Dados muito sensíveis devem considerar o uso de criptografia na geração de cópias de segurança. Arquive em um formato padrão, redirecionando a saída da informação para um codificador, redirecionando agora a informação gerada pelo codificador para o /tmp/tapepipe conforme foi descrito acima. Note que erros no processo de recuperação resultarão na impossibilidade de recuperação de todos os arquivos após este ponto uma vez que todo o arquivo é agora um único arquivo codificado. É possível usar opções afio para primeiramente compactar cada arquivo através do gzip, depois codificá-los através de um programa DES, mas note que esta compactação inicial provê uma grande quantia de textos simples conhecidos para determinados quebradores de códigos. Uma opção mais segura seria a de evitar o passo gzip e simplesmente codificar todos os arquivos à custa de uma área de fita mais significativa. É desnecessário dizer que os arquivos DES não podem ser compactados eficientemente. As instruções rc.inet1 incluídas permitirão a comunicação somente com a rede local e não com o resto do mundo através de um roteador. Durante a recuperação total para um disco rígido vazio, o disco SAR #3 provê ftape.o para a máquina MS-DOS através de NFS. Isto se deve ao fato de alguma versão antiga do módulo ftape não poder controlar alguns dispositivos de fitas quando há um disco montado no dispositivo de disquetes. Com kernels mais novos, o conteúdo inteiro do NFS pode ser omitido. IImmppoorrttaannttee. ******TTEESSTTAARR****** o processo de recuperação do SAR. Esteja certo de que se pode recuperar pelo menos um arquivo da fita para a máquina Linux usando somente os discos SAR (ou seja, sem montar o disco rígido). Caso não se possa reinicializar a máquina Linux sem perturbar vários usuários, troque a informação de configuração nos discos SAR para determinar a identidade ``linux'' para uma outra máquina MS-DOS e então inicialize as duas máquinas MS-DOS via disquete no modo Linux para estar seguro de que tudo funcione. Depois, troque a identidade ``linux'' novamente para que se tenha discos SAR usáveis. 44.. DDiirreeiittooss aauuttoorraaiiss 10 de Janeiro de 1995 por Christopher Neufeld (neufeld@physics.utoronto.ca). Modificado em 6 de fevereiro de 1996. Modificado em 5 de agosto de 1997.