Recuperar archivos de una partición btrfs dd-ed


0

He dd-ed una partición btrfs (de un Jolla teléfono), de acuerdo con algunas instrucciones de último recurso para tener una copia de seguridad (vea: notas en Mer es Pez vela / dispositivo de copia de seguridad página wiki,). Tal vez erróneamente, después de leer el Btrfs Gotchas página wiki.

[actualizado] Quiero copiar algunos archivos desde el subvolumen home. Tenga en cuenta, los archivos no fueron eliminados. Cuando monte el subvolumen de interés, puedo navegar en directorios y listar archivos. Sin embargo, cada intento de leer o copiar falla.

[actualizado] Después dd devolviendo la imagen a una tarjeta micro-SD vacía (un intento de ver si no se pueden copiar archivos, es decir cp: reading 'filename': Input/output error, se debe a lo mencionado a http://superuser.com/a/793638/128768 ), como root, hago:

# list tree roots
btrfs restore -l /dev/sdc

tree key (EXTENT_TREE ROOT_ITEM 0) 46944256 level 2
tree key (DEV_TREE ROOT_ITEM 0) 35631104 level 0
tree key (FS_TREE ROOT_ITEM 0) 157016064 level 0
tree key (CSUM_TREE ROOT_ITEM 0) 82132992 level 2
tree key (QUOTA_TREE ROOT_ITEM 0) 67289088 level 0
tree key (UUID_TREE ROOT_ITEM 0) 32456704 level 0
tree key (259 ROOT_ITEM 0) 29503488 level 0
tree key (264 ROOT_ITEM 33) 116465664 level 2
tree key (265 ROOT_ITEM 34) 116400128 level 1
tree key (299 ROOT_ITEM 866702) 40960000 level 3
tree key (325 ROOT_ITEM 2361424) 119631872 level 2
tree key (327 ROOT_ITEM 2361546) 152805376 level 3
tree key (328 ROOT_ITEM 2361547) 84439040 level 2
tree key (DATA_RELOC_TREE ROOT_ITEM 0) 122241024 level 0

Según https://superuser.com/a/875265/128768 , Hago:

# mount the card
mount /dev/sdc /mnt/ddjolla

# enter in
cd /mnt/ddjolla/

# then, list subvolumes
btrfs subvolume list .

ID 259 gen 10 top level 5 path @swap
ID 264 gen 2361991 top level 5 path factory-@
ID 265 gen 2361991 top level 5 path factory-@home
ID 299 gen 2362013 top level 5 path @_old
ID 325 gen 2361991 top level 299 path @_old/factory-@
ID 327 gen 2484920 top level 5 path @
ID 328 gen 2484927 top level 5 path @home

# set default subvolume to one from which to revert files
btrfs subvolume set-default 328 /mnt/ddjolla

# unmount
umount /mnt/blah

Se ve bien hasta ahora. En este punto,

# try to find root(s)
btrfs-find-root /dev/sdc

Superblock thinks the generation is 2484930
Superblock thinks the level is 1

lo que está en marcha es demasiado lento, consume recursos de la CPU y no hay signos de progreso.

"Descubrí", ahora, que probablemente el sistema de archivos de la sdcard en la que dirigí el archivo de salida de dd fue un FAT uno! (Ver comentarios en Q & amp; A guía de copia de seguridad completa del teléfono en https://together.jolla.com/questions/ ) Probablemente esto fue un no-go (para archivos & gt; 4GB) y la mayoría de los datos, de la partición original, se pierden (lo que, aparentemente, era & gt; 4GB). ¿Es eso así?

Para los registros, aquí otra pieza de información.

btrfs check /dev/sdc
Checking filesystem on /dev/sdc
UUID: 0f8a2490-53ed-4ff6-ba34-b81df3430387
checking extents
checking free space cache
btrfs: csum mismatch on free space cache
failed to load free space cache for block group 46130921472
btrfs: csum mismatch on free space cache
failed to load free space cache for block group 47204663296
btrfs: csum mismatch on free space cache
failed to load free space cache for block group 49352146944
btrfs: csum mismatch on free space cache
failed to load free space cache for block group 50425888768
btrfs: csum mismatch on free space cache
failed to load free space cache for block group 51499630592
btrfs: csum mismatch on free space cache
failed to load free space cache for block group 52573372416
btrfs: csum mismatch on free space cache
failed to load free space cache for block group 53647114240
btrfs: csum mismatch on free space cache
failed to load free space cache for block group 54720856064
btrfs: csum mismatch on free space cache
failed to load free space cache for block group 55794597888
btrfs: csum mismatch on free space cache
failed to load free space cache for block group 56868339712
checking fs roots
checking csums
checking root refs
checking quota groups
Qgroup is already inconsistent before checking
Counts for qgroup id: 265 are different
our:        referenced 38080512 referenced compressed 38080512
disk:       referenced 38080512 referenced compressed 38080512
our:        exclusive 38002688 exclusive compressed 38002688
disk:       exclusive 4096 exclusive compressed 4096
diff:       exclusive 37998592 exclusive compressed 37998592
found 9357398016 bytes used err is 1
total csum bytes: 8866964
total tree bytes: 264663040
total fs tree bytes: 237322240
total extent tree bytes: 14561280
btree space waste bytes: 79581505
file data blocks allocated: 9901109248
 referenced 8732901376

¿Hay alguna manera de solucionar este problema y hacer btrfs restore -r ... como se describe en la respuesta de referencia? Si no, y probablemente este sea el caso, quizás esto pueda servir como un error útil para evitar otros similares en el futuro.


¿Se eliminaron los archivos en primer lugar? La pregunta no es clara al respecto. Si no lo fueran, entonces mount -t btrfs -o ro,subvol=/ your-image-file /mnt/foo, desciende a subvolúmenes / directorios bajo /mnt/foo/, localiza los archivos y copia desde allí. Sin embargo, todo el regreso a la tarjeta SD parece innecesario; puede montar la imagen (o mejor: la copia de ella, para que tenga la fuente intacta en caso de que algo salga mal).
Kamil Maciorowski

@KamilMaciorowski No, los archivos no fueron eliminados. Cuando monte el subvolumen, puedo navegar en los directorios en cuestión y listar los archivos. Pero simplemente no puedo leerlos o copiarlos. Que hace localizar los archivos ¿media? dd volver atrás fue un intento de ver si la falla al copiar el archivo (es decir, me sale cp: reading 'filename': Input/output error ) se debió a: superusuario.com/a/793638/128768 .
Nikos Alexandris

"localizar": quise decir "localizar, encontrar" (mi pobre inglés tal vez).
Kamil Maciorowski

Que hace dmesg decir cuando hay cp: reading 'filename': Input/output error? ( Referencia .)
Kamil Maciorowski
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.