No puedo ver la partición del HDD externo en la Utilidad de Discos

Tengo un HDD externo de TB dividido en 2 particiones:

Primera partición: 280 GB
Segunda partición: 1720 GB

Inicialmente, ambas particiones eran NTFS.

Luego, formateé la primera partición a macOS Extended FS y luego a FAT32, y la segunda partición desapareció. No puedo verlo en Disk Utilities ni en Paragon NTFS 15.

Traté de revertir la primera partición a NTFS, pero la segunda aún no se muestra... ¿Qué debo hacer?

aquí está el resultado dediskutil list

~ diskutil list
  /dev/disk0 (internal, physical):
     #:                       TYPE NAME                    SIZE       IDENTIFIER
     0:      GUID_partition_scheme                        *250.1 GB   disk0
     1:                        EFI EFI                     209.7 MB   disk0s1
     2:                 Apple_APFS Container disk1         249.8 GB   disk0s2

  /dev/disk1 (synthesized):
     #:                       TYPE NAME                    SIZE       IDENTIFIER
     0:      APFS Container Scheme -                      +249.8 GB   disk1
                                   Physical Store disk0s2
     1:                APFS Volume Macintosh HD            119.9 GB   disk1s1
     2:                APFS Volume Preboot                 20.5 MB    disk1s2
     3:                APFS Volume Recovery                503.9 MB   disk1s3
     4:                APFS Volume VM                      5.4 GB     disk1s4

  /dev/disk2 (external, physical):
     #:                       TYPE NAME                    SIZE       IDENTIFIER
     0:     FDisk_partition_scheme                        *2.0 TB     disk2
     1:               Windows_NTFS HDD1                    228.4 GB   disk2s1

Aquí está el resultado desudo fdisk /dev/disk2

~ sudo fdisk /dev/disk2
    Disk: /dev/disk2    geometry: 243201/255/63 [3907029167 sectors]
    Signature: 0xAA55
             Starting       Ending
     #: id  cyl  hd sec -  cyl  hd sec [     start -       size]
    ------------------------------------------------------------------------
    *1: 07 1023 254  63 - 1023 254  63 [    206848 -  446126158] HPFS/QNX/AUX
     2: 00    0   0   0 -    0   0   0 [         0 -          0] unused      
     3: 00    0   0   0 -    0   0   0 [         0 -          0] unused      
     4: 00    0   0   0 -    0   0   0 [         0 -          0] unused      

EDITAR:

$ sudo dd if=/dev/disk2 bs=512 skip=446333006 count=150000000 | grep -o -a -b "BOOTMGR"

71010552671:BOOTMGR
71010552692:BOOTMGR
150000000+0 records in
150000000+0 records out
76800000000 bytes transferred in 11355.441546 secs (6763277 bytes/sec)
Publique la salida del comando diskutil list.
¡hecho! Puedo verlo como FDisk_partition_scheme
Bueno, también podría publicar el resultado de sudo fdisk /dev/disk2, pero dudo que cambie mi respuesta. Vale la pena intentarlo de todos modos.
hecho. ¿Es tan malo?
Intenta ejecutar el comandosudo dd if=/dev/disk2 bs=512 skip=446333006 count=50000000 | fgrep -o -a -b "BOOTMGR is compressed"
¿Puedo suponer que usó una máquina con Windows para formatear las particiones NTFS?
Si eso es correcto. Pero ahora solo tengo una Mac. Estoy descargando Windows 10 y Linux para ejecutarlo como vm
@klanomath Eso espero. Haré todo lo posible para recuperarlo.
sudo dd if=/dev/disk2 bs=512 skip=446333006 count=150000000 | grep -o -a -b "BOOTMGR" Contraseña: 71010552671:BOOTMGR 71010552692:BOOTMGR 150000000+0 registros entrantes 150000000+0 registros salientes 76800000000 bytes transferidos en 11355,441546 segundos (6763277 bytes/seg)
Agregué el resultado formateado en la pregunta.
¡Marque la respuesta de David como la correcta! Mi respuesta aquí realmente no responde a su pregunta.

Respuestas (2)

Solo hay una partición en su disco externo. Sospecho que en lugar de borrar la primera partición, borraste todo el disco. Pero si esto fuera cierto, la nueva partición abarcaría todo el disco. Entonces, en este punto, sería mejor intentar encontrar la partición que falta.

La función correcta para encontrar el encabezado de las particiones NTFS que faltan se muestra a continuación. Para usar esta función, primero deberá copiar esta función y luego pegarla como un comando en una ventana de la aplicación Terminal.

findntfs() { sudo bash -c "for i in {$1..$2};do xxd -a -s \$[\$i*1000000] -l 1000000 $3|fgrep -a -b 'NTFS    ';echo -en '\r'\$i:;done";echo done;}

A continuación se muestra un ejemplo de su uso. Tengo una unidad flash con formato NTFS de 4 GB. La salida de se sudo fdisk /dev/disk1da a continuación.

Disk: /dev/disk1    geometry: 968/128/63 [7811072 sectors]
Signature: 0xAA55
         Starting       Ending
 #: id  cyl  hd sec -  cyl  hd sec [     start -       size]
------------------------------------------------------------------------
 1: 07    1   0   1 -  967  81  18 [      8064 -    7803008] HPFS/QNX/AUX
 2: 00    0   0   0 -    0   0   0 [         0 -          0] unused      
 3: 00    0   0   0 -    0   0   0 [         0 -          0] unused      
 4: 00    0   0   0 -    0   0   0 [         0 -          0] unused      

Dado que la unidad flash contiene 7811072sectores y el tamaño del sector es 512bytes, el tamaño de la unidad es exactamente 3999268864bytes, que es el producto de los dos números. Si quisiera buscar una partición NTFS en toda la unidad flash, tendría que buscar entre 0 MB y 3999 MB de datos. A continuación se muestra un ejemplo de uso findntfspara hacer esto.

Marlin:~ davidanderson$ findntfs 0 3999 /dev/disk1
Password:
3:70:003f0000: eb52 904e 5446 5320 2020 2000 0208 0000  .R.NTFS    .....
3998:1125334:ee5ffe00: eb52 904e 5446 5320 2020 2000 0208 0000  .R.NTFS    .....
3999:done
Marlin:~ davidanderson$ 

Nota: Mientras se ejecuta esta función, verá que se actualizan los valores. Este es el megabyte actual que se está buscando. A partir de estos valores, puede determinar el progreso de la búsqueda.

La información importante para extraer de esta salida son los valores hexadecimales 003f0000y ee5ffe00. Estos valores son el desplazamiento en bytes para el primer y último sector de la partición NTFS.

A continuación se muestra el valor de cálculo de la ubicación de bytes del primer sector en función del valor que se muestra en la salida de fdisk.

8064 * 512 = 4128768 = 0x3F0000

A continuación se muestra el valor de cálculo de la ubicación de bytes del último sector en función del valor que se muestra en la salida de fdisk.

(8064 + 7803008 - 1) * 512 =  3999268352  = 0xEE5FFE00

Ambos valores coinciden con la salida de findntfs.

En su caso, sugeriría buscar el comienzo de la partición faltante en algún lugar entre 270 GB y 290 GB. Para esto, el comando sería como se muestra a continuación.

findntfs 270000 290000 /dev/disk2

Por supuesto, esto puede llevar un tiempo. Si se siente afortunado, puede intentar reducir su búsqueda.

Sugeriría buscar el final de su partición faltante en algún lugar alrededor de 1980398 GB a 2000398 GB. Para esto, el comando sería como se muestra a continuación.

findntfs 1980398 2000398 /dev/disk2

La siguiente función busca en el sector encontrado e imprime el número de sectores ocupados por la partición NTFS candidata. La entrada es el desplazamiento de la partición en bytes y el nombre de la unidad.

ntfssectors() {(n=$(sudo hexdump -e '1/8 "%u"' -s $((0x$1+40)) -n 8 $2); echo $(($n+1)))}

A continuación se muestra un ejemplo donde se utiliza esta función.

Nota: Se supone que la entrada es hexadecimal.

Marlin:~ davidanderson$ ntfssectors2 003F0000 /dev/disk1
7803008
Marlin:~ davidanderson$ ntfssectors2 ee5ffe00 /dev/disk1
7803008
Marlin:~ davidanderson$ 

La salida de ambas funciones es la misma que la de fdisk.

DIOS MÍO. No sabría decirlo, los modales están muy cerca. ¿Hay alguna forma de recuperarse? Tengo toda mi vida en este HDD :(
Bueno, si hubiera borrado todo el disco, entonces la nueva partición tendría el tamaño de todo el disco. Esto no es cierto en este caso. Entonces, ahora se trata de determinar si la partición que falta se puede recuperar. No hay nada en las tablas de particiones que nos diga dónde estaba la partición que falta.
resultado del segundo comando: hexdump: 25600000000: valor de longitud incorrecta
Actualicé el comando para corregir mi error. Intente ejecutar el comando nuevamente.
➜ ~ sudo dd if=/dev/disk2 bs=512 skip=446333006 count=50000000 | fgrep -o -a -b "BOOTMGR está comprimido" 50000000+0 registros de entrada 50000000+0 registros de salida 25600000000 bytes transferidos en 3583,679655 segundos (7143496 bytes/seg)

La respuesta de David ya explica lo que probablemente le sucedió a tu disco. Accidentalmente particionaste el disco en lugar de borrar solo un volumen.

De acuerdo con su declaración, su disco contenía dos particiones anteriormente:

  • Primera partición: 280 GB
  • Segunda partición: 1720 GB

Después de volver a particionar la unidad, solo queda una partición:

  • Primera y única partición: 228,4 GB

Esto probablemente significa que la segunda partición no se vio afectada; solo se eliminó la entrada en el MBR.

Debería poder recuperar la partición simplemente agregando una segunda partición en el MBR.

Para detectar los límites anteriores de la partición perdida, debe buscar cadenas específicas en el disco que determinen el primer y último bloque de un volumen NTFS (anterior).

Las cadenas específicas son NTFS o BOOTMGR/bootmgr.

El contenido del bloque depende de su configuración regional , por lo que buscar "BOOTMGR está comprimido" (que se encuentra en un sector de arranque de partición NTFS en inglés) no es necesariamente exitoso. Sin embargo, "BOOTMGR" (inglés/alemán) o "bootmgr" (¿español/francés?) deberían funcionar. No he probado sistemas Windows no latinos.

Ejemplos

Primer bloque de un volumen NTFS alemán:

ingrese la descripción de la imagen aquí

Último bloque de un volumen NTFS alemán:

ingrese la descripción de la imagen aquí

Esto se puede hacer agregando el dispositivo a grep.

Ejemplo:

$ sudo dd if=/dev/disk2 bs=512 skip=2048 count=512 | grep -o -a -b "BOOTMGR"    
421:BOOTMGR
512+0 records in
512+0 records out
262144 bytes transferred in 0.010566 secs (24810155 bytes/sec)

La explicación del comando:

Copie /dev/disk2 con un tamaño de bloque de 512 bytes a la salida estándar, pero omita los primeros 2048 bloques de disk2 y deténgase después de (otros) 512 bloques, canalícelo a grep, trate la salida como texto, busque "BOOTMGR" y finalmente muestra el(los) desplazamiento(s) de bytes del patrón coincidente delante de la línea coincidente respectiva.

En su caso, el resultado 71010552671:BOOTMGRde sudo dd if=/dev/disk2 bs=512 skip=446333006 count=150000000 | grep -o -a -b "BOOTMGR"los medios:

El desplazamiento de bytes es 71010552671 Byte después del último bloque (bloque 446333006) del volumen HDD1 actualmente existente en disk1. En bloques ese es el bloque relativo 138692486 o el bloque absoluto (446333006 + 138692486) = 585025492.

Esto significa dos cosas:

  1. Su partición anterior 1 probablemente tenía un tamaño de ~ 299 GB (= ~ 278 GiB) en lugar de 280 GB
  2. Sus particiones no están alineadas correctamente en bloques de 4k porque ni 446333006 ni 585025492 son divisibles por 8

El último bloque del volumen NTFS desaparecido se puede esperar en los últimos 10.000 bloques de disk2. El comando apropiado para buscarlo es entonces

sudo dd if=/dev/disk2 bs=512 skip=3907019167 count=10000 | grep -o -a -b "BOOTMGR"

Con el resultado del comando, puede determinar el último bloque de la partición desaparecida 2.

Con el primer bloque y el último bloque puede agregar la partición perdida con fdisk al MBR.

Para cotejar el tamaño, puede extraer el tamaño de la partición en sectores en el sector de arranque de la partición en el desplazamiento 0x028 y una longitud de campo de 8 bytes y el tamaño del sector en el desplazamiento 0x0B y una longitud de campo de 2 bytes.

En las capturas de pantalla de ejemplo anteriores, eso es FF E7 DF E8 00 00 00 00(= 3906988031+1) y 00 02(= 512 Byte).

La diskutil infosalida para el volumen de ejemplo (visible en las capturas de pantalla) es:

...
Disk Size:                2.0 TB (2000377872384 Bytes) (exactly 3906988032 512-Byte-Units)
Device Block Size:        512 Bytes
...
10000+0 registros entrantes 10000+0 registros salientes 5120000 bytes transferidos en 0,777240 segundos (6587414 bytes/segundo)
Puedes publicar tu respuesta aquí: apple.stackexchange.com/questions/309938/…
Creé un nuevo hilo y @David Anderson respondió mi primera pregunta, y esta es otra pregunta, por lo que ambos merecen haber aceptado la respuesta :)
No me importa que te conteste menos. Elige la que creas que responde mejor a tu pregunta. Esta es la mejor manera de ayudar a otros con la misma pregunta.
No es necesario que el sector que está buscando contenga código de arranque. O bien, que el código de arranque sea de Microsoft. Por lo tanto, buscar la cadena BOOTMGRpuede hacer que se pierda este sector. La mejor cadena para buscar es NTFS , ya que esta cadena debe aparecer. Es por eso que pregunté cómo se formateó la partición en NTFS. Usar la combinación ddy greplos comandos no encontrará la cadena NTFS . Necesitas convertir el binario a texto, luego buscar. Esto es lo que hacen los comandos xxdy fgrep. Además, un forbucle elimina la limitación del tamaño de una búsqueda.
Recuperé mi partición gracias a @klanomath. Intentaré darte 50 puntos si encuentro cómo hacerlo :)
Parece que ya no es posible: meta.stackexchange.com/questions/77226/…