(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

603. Preparar para escrever os dados em outra parte

É necessário certificar-se de se ter uma partição de resgate em algum lugar. Com sorte o sistema utilizado tem várias partições, talvez uma raiz, uma /usr e uma /home. Com todos estas para escolher, não se deve ter nenhum problema: apenas crie um novo diretório em alguma delas.

Caso se tenha somente a partição raiz e tudo esteja armazenado nela (como eu, até se reparticionar o disco), as coisas ficam um pouco mais complexas. Talvez se tenha uma partição MS-DOS ou Windows que se possa usar. Ou se tem um programa de discos virtuais em memória no kernel, talvez como um módulo? Para usar o disco em memória (supondo que se tenha um kernel mais recente que o 1.3.48), pode-se executar o seguinte:

# dd if=/dev/zero of=/dev/ram0 bs=1k count=2048
# mke2fs -v -m 0 /dev/ram0 2048
# mount -t ext2 /dev/ram0 /mnt

Este procedimento criará um volume de disco em memória de 2MB, montando-o em seguida como /mnt.

Um pequeno aviso: ao se usar kerneld para carregar e descarregar automaticamente os módulos, não desmonte o disco em memória até que qualquer arquivo que esteja nele seja copiado para um meio de armazenagem não volátil. Uma vez desmontado, o kerneld assume que pode descarregar o módulo (depois do período de espera usual) e uma vez que isto aconteça, a memória é reutilizada por outras partes do kernel, perdendo-se todos os dados e as horas de trabalho que se passaram recuperando seus dados.

Caso se tenha um dos novos dispositivos removíveis de 'super unidades de disquetes', eles provavelmente são uma boa escolha para a localização da partição de salvamento. Caso contrário, será necessário utilizar as unidades de disquete.

A outra coisa que se pode precisar é um programa que possa ler os dados necessários a partir do meio do dispositivo. Num instante o dd fará o trabalho, mas para ler de uma partição de 600 MB para uma partição de 800MB, o dd insiste em ler, ignorando os primeiros 600 MB. Isto pode levar muito tempo. Minha saída para isto foi escrever um programa que irá diretamente para o meio da partição. É chamado fsgrab, e os fontes podem ser encontrados em meu servidor web e ele deve logo estar em metalab (e seus espelhos). Caso se queira usar este método, o resto deste Como Fazer supõe que se tenha fsgrab à disposição.

Se nenhum dos arquivos que se estiver tentando recuperar tiver mais que 12 blocos de comprimento (onde um bloco tem um tamanho normal de um kilobyte), então não se precisará do fsgrab. Caso se necessite usar fsgrab, mas não se queira fazê-lo, é bastante simples traduzir uma linha de comando fsgrab para uma para dd. Se tivermos:

fsgrab -c contador -s ignorar dispositivo

então o comando dd correspondente é:

dd bs=1k if=dispositivo count=contador skip=ignorar

Devo adverti-lo que embora o fsgrab tenha funcionado perfeitamente para mim, eu não assumo nenhuma responsabilidade sobre seu desempenho. Foi realmente uma saída muita rápida para conseguir que as coisas funcionassem. Para maiores detalhes sobre a falta de garantia, veja a seção "Sem Garantia" no arquivo COPYING incluído com ele (o GNU Licença Geral Pública).


Página seguinte Página anterior Índice