Limpei minha tabela de partição NTFS (Windows) usando o gparted clicando em "Dispositivo-> Criar tabela de partição... e depois aplicar", existe uma maneira de recuperar minha partição NTFS?
Eu tentei usar este comando gpart /dev/sda
e obtive o seguinte resultado:
Begin scan...
End scan.
Checking partitions...
Ok.
Guessed primary partition table:
Primary partition(1)
type: 000(0x00)(unused)
size: 0mb #s(0) s(0-0)
chs: (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r
Primary partition(2)
type: 000(0x00)(unused)
size: 0mb #s(0) s(0-0)
chs: (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r
Primary partition(3)
type: 000(0x00)(unused)
size: 0mb #s(0) s(0-0)
chs: (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r
Primary partition(4)
type: 000(0x00)(unused)
size: 0mb #s(0) s(0-0)
chs: (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r
O que essa saída significa? Existe uma maneira de me recuperar?
Responder1
Existe a possibilidade de recuperar a tabela de partições, mas é necessário que 2 condições sejam atendidas:
- Você não reiniciou sua máquina.
- A unidade estava em uso no momento em que a tabela foi alterada.
Como isso funciona é que o kernel mantém o layout da partição na memória. Se uma partição estiver em uso, ela precisa saber onde a partição começa, portanto se recusará a recarregar a nova tabela até que ela não esteja mais em uso.
Como fazer isso:
Vá para /sys/block/sda
. Lá dentro você verá um diretório para cada partição ( sda1
, sda2
, etc). Dentro de cada um deles há um arquivo chamado start
and size
(so /sys/block/sda/sda1/start
). Se você recriar sua tabela de partições usando exatamente os mesmos locais e tamanhos iniciais, você ficará bem.
Observe que ele não mantém o tipo de partição. O Linux não se importa com essas informações. Portanto, após a recriação, você terá que lembrar qual tipo de partição foi definido (NTFS ou qualquer outro).
Exemplo
Disco original:
# fdisk -l /dev/sdc Disco /dev/sdc: 8006 MB, 8006926336 bytes, 15638528 setores Unidades = setores de 1 * 512 = 512 bytes Tamanho do setor (lógico/físico): 512 bytes/512 bytes Tamanho de E/S (mínimo/ideal): 512 bytes/512 bytes Identificador de disco: 0x000ce29c Sistema de identificação de blocos de início de inicialização do dispositivo /dev/sdc1 2048 2099199 1048576 83 Linux /dev/sdc2 2099200 15638527 6769664 83 Linux
# montar | grep sdc /dev/sdc2 em /mnt/tmp digite xfs (rw)
# gato /mnt/tmp/mundo olá
Limpando a tabela de partições
#fdisk /dev/sdc Bem-vindo ao fdisk (util-linux 2.22.2). As alterações permanecerão apenas na memória, até que você decida escrevê-las. Tenha cuidado antes de usar o comando write. Comando (m para ajuda): d Número da partição (1-4): 1 A partição 1 foi excluída Comando (m para ajuda): d Partição selecionada 2 A partição 2 foi excluída Comando (m para ajuda): p Disco /dev/sdc: 8006 MB, 8006926336 bytes, 15638528 setores Unidades = setores de 1 * 512 = 512 bytes Tamanho do setor (lógico/físico): 512 bytes/512 bytes Tamanho de E/S (mínimo/ideal): 512 bytes/512 bytes Identificador de disco: 0x000ce29c Sistema de identificação de blocos de início de inicialização do dispositivo Comando (m para ajuda): w A tabela de partições foi alterada! Chamando ioctl() para reler a tabela de partições. AVISO: A releitura da tabela de partição falhou com o erro 16: Dispositivo ou recurso ocupado. O kernel ainda usa a tabela antiga. A nova tabela será usada em na próxima reinicialização ou depois de executar partprobe(8) ou kpartx(8) Sincronizando discos.
Observe que ele ainda está montado e acessível:
# gato /mnt/tmp/mundo olá
Obtenha as compensações
# cd /sys/class/block/sdc #ls alinhamento_offset dispositivo@eventos_poll_msecs potência/ ro escravos/ bdi@ descartar_alignment ext_range fila/ sdc1/ stat detentores de eventos de capacidade/ intervalo sdc2/ subsistema@ dev events_async tamanho removível a bordo uevent # gato sdc1/iniciar 2048 # gato sdc1/tamanho 2097152 # gato sdc2/iniciar 2099200 # gato sdc2/tamanho 13539328
Restaurar a tabela de partições
#fdisk /dev/sdc Bem-vindo ao fdisk (util-linux 2.22.2). As alterações permanecerão apenas na memória, até que você decida escrevê-las. Tenha cuidado antes de usar o comando write. Comando (m para ajuda): n Tipo de partição: p primário (0 primário, 0 estendido, 4 gratuito) e estendido Selecione (padrão p): p Número da partição (1-4, padrão 1): 1 Primeiro setor (2048-15638527, padrão 2048): 2048 Último setor, +setores ou +tamanho{K,M,G} (2048-15638527, padrão 15638527): +2097151 A partição 1 do tipo Linux e de tamanho 1 GiB está definida Comando (m para ajuda): n Tipo de partição: p primário (1 primário, 0 estendido, 3 gratuitos) e estendido Selecione (padrão p): p Número da partição (1-4, padrão 2): 2 Primeiro setor (2099200-15638527, padrão 2099200): 2099200 Último setor, +setores ou +tamanho{K,M,G} (2099200-15638527, padrão 15638527): +13539327 A partição 2 do tipo Linux e de tamanho 6,5 GiB está definida Comando (m para ajuda): p Disco /dev/sdc: 8006 MB, 8006926336 bytes, 15638528 setores Unidades = setores de 1 * 512 = 512 bytes Tamanho do setor (lógico/físico): 512 bytes/512 bytes Tamanho de E/S (mínimo/ideal): 512 bytes/512 bytes Identificador de disco: 0x000ce29c Sistema de identificação de blocos de início de inicialização do dispositivo /dev/sdc1 2048 2099199 1048576 83 Linux /dev/sdc2 2099200 15638527 6769664 83 Linux Comando (m para ajuda): w A tabela de partições foi alterada! Chamando ioctl() para reler a tabela de partições. AVISO: A releitura da tabela de partição falhou com o erro 16: Dispositivo ou recurso ocupado. O kernel ainda usa a tabela antiga. A nova tabela será usada em na próxima reinicialização ou depois de executar partprobe(8) ou kpartx(8) Sincronizando discos.
!!Observe que ao especificar o último setor, usamos o tamanho -1.!!
Verificação
Vamos desmontar a unidade, executar partprobe
para dizer ao kernel para pegar a nova tabela, então remontar e verificar se ainda chegamos ao nosso arquivo.
#umount /mnt/tmp/ #partprobe /dev/sdc #montar /dev/sdc2 /mnt/tmp # gato /mnt/tmp/mundo olá
Responder2
Você pode tentar usardisco de testepara recuperar a tabela de partição. Testdisk irá ler a superfície do disco e tentar determinar onde as partições começam e terminam.
Responder3
parted
possui um comando de resgate que pode detectar o início e a duração do sistema de arquivos se você souber aproximadamente onde ele estava.
Responder4
Se acontecer de você conhecer as dimensões do disco NTFS, você "talvez" consiga redefini-las usando fdisk ou parted, mas acho que você está sem sorte.