Limpié mi tabla de particiones usando gparted, ¿hay alguna manera de recuperar mi partición?

Limpié mi tabla de particiones usando gparted, ¿hay alguna manera de recuperar mi partición?

Limpié mi tabla de particiones NTFS (Windows) usando gparted haciendo clic en "Dispositivo->Crear tabla de particiones... y luego aplicar", ¿hay alguna manera de recuperar mi partición NTFS?

Intenté usar este comando gpart /dev/sda y obtengo el siguiente 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

¿Qué significa esta salida? ¿Hay alguna manera de recuperarme?

Respuesta1

Existe la posibilidad de recuperar la tabla de particiones, pero requiere que se cumplan 2 condiciones:

  1. No has reiniciado tu máquina.
  2. La unidad estaba en uso en el momento en que se cambió la mesa.

Cómo funciona esto es que el kernel mantiene el diseño de la partición en la memoria. Si una partición está en uso, necesita saber dónde comienza, por lo que se negará a recargar la nueva tabla hasta que ya no esté en uso.

Como hacer esto:

Ir a /sys/block/sda. Allí dentro verá un directorio para cada partición ( sda1,, sda2etc.). Dentro de cada uno de ellos hay un archivo llamado starty size(so /sys/block/sda/sda1/start). Si recrea su tabla de particiones utilizando exactamente estas mismas ubicaciones y tamaños de inicio, estará bien.

Tenga en cuenta que no mantiene el tipo de partición. A Linux no le importa esta información. Entonces, después de recrear, deberá recordar en qué tipo de partición se configuró (NTFS o lo que sea).


Ejemplo

Disco original:

# fdisk -l /dev/sdc

Disco /dev/sdc: 8006 MB, 8006926336 bytes, 15638528 sectores
Unidades = sectores de 1 * 512 = 512 bytes
Tamaño del sector (lógico/físico): 512 bytes / 512 bytes
Tamaño de E/S (mínimo/óptimo): 512 bytes/512 bytes
Identificador de disco: 0x000ce29c

   Dispositivo Arranque Inicio Bloques finales Sistema de identificación
/dev/sdc1 2048 2099199 1048576 83 Linux
/dev/sdc2 2099200 15638527 6769664 83 Linux
# montaje | grep COSUDE
/dev/sdc2 en /mnt/tmp escriba xfs (rw)
# gato /mnt/tmp/mundo
Hola

Limpiar la tabla de particiones

# fdisk /dev/sdc
Bienvenido a fdisk (util-linux 2.22.2).

Los cambios permanecerán sólo en la memoria hasta que usted decida escribirlos.
Tenga cuidado antes de utilizar el comando de escritura.


Comando (m para ayuda): d
Número de partición (1-4): 1
Se elimina la partición 1

Comando (m para ayuda): d
Partición seleccionada 2
Se elimina la partición 2

Comando (m para ayuda): p

Disco /dev/sdc: 8006 MB, 8006926336 bytes, 15638528 sectores
Unidades = sectores de 1 * 512 = 512 bytes
Tamaño del sector (lógico/físico): 512 bytes / 512 bytes
Tamaño de E/S (mínimo/óptimo): 512 bytes/512 bytes
Identificador de disco: 0x000ce29c

   Dispositivo Arranque Inicio Bloques finales Sistema de identificación

Comando (m para ayuda): w
La tabla de particiones se ha alterado!

Llamar a ioctl() para volver a leer la tabla de particiones.

ADVERTENCIA: Error al volver a leer la tabla de particiones con el error 16: Dispositivo o recurso ocupado.
El kernel todavía usa la tabla anterior. La nueva tabla se utilizará en
el próximo reinicio o después de ejecutar partprobe(8) o kpartx(8)
Sincronización de discos.

Tenga en cuenta que todavía está montado y accesible:

# gato /mnt/tmp/mundo
Hola

Obtener las compensaciones

# cd /sys/clase/bloque/sdc

# ls
alineación_offset dispositivo@eventos_poll_msecs potencia/ro esclavos/
bdi@ descarte_alineación cola rango_ext/ sdc1/ estadística
titulares de eventos de capacidad/rango sdc2/subsistema@
dev events_async tamaño extraíble en vuelo uevent

# gato sdc1/inicio
2048

# gato sdc1/tamaño
2097152

# gato sdc2/inicio
2099200

# gato sdc2/tamaño
13539328

Restaurar la tabla de particiones

# fdisk /dev/sdc
Bienvenido a fdisk (util-linux 2.22.2).

Los cambios permanecerán sólo en la memoria hasta que usted decida escribirlos.
Tenga cuidado antes de utilizar el comando de escritura.


Comando (m para ayuda): n
Tipo de partición:
   p primario (0 primario, 0 extendido, 4 libre)
   e extendido
Seleccionar (p predeterminado): p
Número de partición (1-4, predeterminado 1): 1
Primer sector (2048-15638527, predeterminado 2048): 2048
Último sector, +sectores o +tamaño{K,M,G} (2048-15638527, predeterminado 15638527): +2097151
Se establece la partición 1 de tipo Linux y de tamaño 1 GiB

Comando (m para ayuda): n
Tipo de partición:
   p primario (1 primario, 0 extendido, 3 libres)
   e extendido
Seleccionar (p predeterminado): p
Número de partición (1-4, predeterminado 2): 2
Primer sector (2099200-15638527, predeterminado 2099200): 2099200
Último sector, +sectores o +tamaño{K,M,G} (2099200-15638527, predeterminado 15638527): +13539327
Se establece la partición 2 de tipo Linux y de tamaño 6,5 GiB

Comando (m para ayuda): p

Disco /dev/sdc: 8006 MB, 8006926336 bytes, 15638528 sectores
Unidades = sectores de 1 * 512 = 512 bytes
Tamaño del sector (lógico/físico): 512 bytes / 512 bytes
Tamaño de E/S (mínimo/óptimo): 512 bytes/512 bytes
Identificador de disco: 0x000ce29c

   Dispositivo Arranque Inicio Bloques finales Sistema de identificación
/dev/sdc1 2048 2099199 1048576 83 Linux
/dev/sdc2 2099200 15638527 6769664 83 Linux

Comando (m para ayuda): w
La tabla de particiones se ha alterado!

Llamar a ioctl() para volver a leer la tabla de particiones.

ADVERTENCIA: Error al volver a leer la tabla de particiones con el error 16: Dispositivo o recurso ocupado.
El kernel todavía usa la tabla anterior. La nueva tabla se utilizará en
el próximo reinicio o después de ejecutar partprobe(8) o kpartx(8)
Sincronización de discos.

!!Tenga en cuenta que al especificar el último sector, utilizamos el tamaño - 1.!!

Verificación

Desmontemos la unidad, ejecutemos partprobepara indicarle al kernel que recoja la nueva tabla, luego volvamos a montar y verifiquemos que todavía accedemos a nuestro archivo.

# desmontar /mnt/tmp/

# partprobe /dev/sdc

# montar /dev/sdc2 /mnt/tmp

# gato /mnt/tmp/mundo
Hola

Respuesta2

Podrías intentar usardisco de pruebapara recuperar la tabla de particiones. Testdisk leerá la superficie del disco e intentará determinar dónde comienzan y terminan las particiones.

Respuesta3

partedtiene un comando de rescate que puede rastrear el inicio y la longitud del sistema de archivos si sabe aproximadamente dónde estaba.

Respuesta4

Si conoce las dimensiones del disco NTFS, "es posible" que pueda restablecerlas usando fdisk o parted, pero creo que no tiene suerte.

información relacionada