Você pode tentar usar o testdisk para recuperar a tabela de partições. O Testdisk lerá a superfície do disco e tentará determinar onde as partições começam e terminam.
Eu limpei minha tabela de partições NTFS (windows) usando o gparted clicando em "Device- > Create Partition Table ... e então aplique", existe uma maneira de recuperar minha partição NTFS?
Eu tentei usar este comando gpart /dev/sda
Eu obtenho o seguinte colocar:
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 recuperar?
Você pode tentar usar o testdisk para recuperar a tabela de partições. O Testdisk lerá a superfície do disco e tentará determinar onde as partições começam e terminam.
Existe a possibilidade de recuperar a tabela de partições, mas são necessárias 2 condições:
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 é iniciada, por isso, ela 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 existe um arquivo chamado start
e size
(então /sys/block/sda/sda1/start
). Se você recriar sua tabela de partições usando esses mesmos locais de início e tamanhos, você estará bem.
Observe que ele não mantém o tipo de partição. O Linux não se importa com essa informação. Então, depois de recriar, você terá que lembrar qual o tipo de partição foi definido como (NTFS ou qualquer outro).
# fdisk -l /dev/sdc Disk /dev/sdc: 8006 MB, 8006926336 bytes, 15638528 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000ce29c Device Boot Start End Blocks Id System /dev/sdc1 2048 2099199 1048576 83 Linux /dev/sdc2 2099200 15638527 6769664 83 Linux
# mount | grep sdc /dev/sdc2 on /mnt/tmp type xfs (rw)
# cat /mnt/tmp/world hello
# fdisk /dev/sdc Welcome to fdisk (util-linux 2.22.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): d Partition number (1-4): 1 Partition 1 is deleted Command (m for help): d Selected partition 2 Partition 2 is deleted Command (m for help): p Disk /dev/sdc: 8006 MB, 8006926336 bytes, 15638528 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000ce29c Device Boot Start End Blocks Id System Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) Syncing disks.
Note que ainda está montado e acessível:
# cat /mnt/tmp/world hello
# cd /sys/class/block/sdc # ls alignment_offset device@ events_poll_msecs power/ ro slaves/ bdi@ discard_alignment ext_range queue/ sdc1/ stat capability events holders/ range sdc2/ subsystem@ dev events_async inflight removable size uevent # cat sdc1/start 2048 # cat sdc1/size 2097152 # cat sdc2/start 2099200 # cat sdc2/size 13539328
# fdisk /dev/sdc Welcome to fdisk (util-linux 2.22.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-15638527, default 2048): 2048 Last sector, +sectors or +size{K,M,G} (2048-15638527, default 15638527): +2097151 Partition 1 of type Linux and of size 1 GiB is set Command (m for help): n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): p Partition number (1-4, default 2): 2 First sector (2099200-15638527, default 2099200): 2099200 Last sector, +sectors or +size{K,M,G} (2099200-15638527, default 15638527): +13539327 Partition 2 of type Linux and of size 6.5 GiB is set Command (m for help): p Disk /dev/sdc: 8006 MB, 8006926336 bytes, 15638528 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000ce29c Device Boot Start End Blocks Id System /dev/sdc1 2048 2099199 1048576 83 Linux /dev/sdc2 2099200 15638527 6769664 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) Syncing disks.
!! Observe que ao especificar o último setor, usamos o tamanho - 1. !!
Vamos desmontar a unidade, executar partprobe
para dizer ao kernel para pegar a nova tabela, depois remontar e verificar se ainda conseguimos acessar nosso arquivo.
# umount /mnt/tmp/ # partprobe /dev/sdc # mount /dev/sdc2 /mnt/tmp # cat /mnt/tmp/world hello
parted
tem um comando de resgate que pode farejar o início e a duração do sistema de arquivos se você souber aproximadamente onde estava.
Se você conhecer as dimensões do disco NTFS, "poderá" ser capaz de redefini-las usando fdisk ou parted, mas acho que você está sem sorte.
Tags ntfs data-recovery gparted