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)
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/disk1
da 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 7811072
sectores y el tamaño del sector es 512
bytes, el tamaño de la unidad es exactamente 3999268864
bytes, 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 findntfs
para 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 003f0000
y 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
.
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:
Después de volver a particionar la unidad, solo queda una partición:
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:
Último bloque de un volumen NTFS alemán:
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:BOOTMGR
de 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:
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 info
salida 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
...
BOOTMGR
puede 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 dd
y grep
los comandos no encontrará la cadena NTFS
. Necesitas convertir el binario a texto, luego buscar. Esto es lo que hacen los comandos xxd
y fgrep
. Además, un for
bucle elimina la limitación del tamaño de una búsqueda.
david anderson
diskutil list
.juliatzin del toro
david anderson
sudo fdisk /dev/disk2
, pero dudo que cambie mi respuesta. Vale la pena intentarlo de todos modos.juliatzin del toro
david anderson
sudo dd if=/dev/disk2 bs=512 skip=446333006 count=50000000 | fgrep -o -a -b "BOOTMGR is compressed"
david anderson
juliatzin del toro
juliatzin del toro
juliatzin del toro
juliatzin del toro
klanomath