Saltar al contenido

¿Cómo recuperar archivos en la partición btrfs?

No olvides que en la informática cualquier problema suele tener diversas resoluciones, así que nosotros aquí te mostraremos lo más óptimo y eficiente.

Solución:

Como sus archivos son pequeños y de texto sin formato, intentaría escanear la salida de “cadenas” en el dispositivo donde reside el sistema de archivos, es decir,

strings /dev/sda1 | less

luego use “/” para buscar las cadenas que podrían estar en ese archivo. Cuando encuentre el texto, delimite el comienzo con “m”, luego vaya al final y use “|cat >file” para guardarlo en un archivo.

De hecho, lo hice cuando tuve una situación similar en otro sistema de archivos sin recuperar, hace unos años, y funcionó muy bien para mí.

Jörg Walter implementó un btrfs-undelete script de shell usando el find-root y restore herramientas de btrfs-progs, que se puede encontrar aquí, y debería ayudar a otros en una posición similar.

Como tiene licencia GPLv2, no puedo incluirlo aquí.

Si su unidad btrfs tiene subvolúmenes, necesita pasar el adicional -r opción a btrfs restore. Desafortunadamente, los scripts que existen, como el que publicó user414471 (http://oelkers.de/tips/undeleteBtrfs.sh), no tienen una opción para hacer esto, pero probablemente se puedan adaptar a esto.

Si desea hacer esto a mano, debe obtener el subvol-id correcto, ya sea con:

# mount /dev/sdXY /mnt/blah
# btrfs subvolume list /mnt/blah
# umount /mnt/blah

o alternativamente con:

# btrfs restore -l /dev/sdXY | grep ROOT_ITEM

Después usas btrfs-find-root para obtener el número de bloque al que desea volver (generalmente el que está justo antes del máximo, que es la raíz actual). Para esto, primero debe establecer el subvolumen predeterminado al que desea revertir los archivos (y revertir este cambio después):

# mount /dev/sdXY /mnt/blah
# btrfs subvolume set-default  /mnt/blah
# umount /mnt/blah
# btrfs-find-root /dev/sdXY
Well block 4321280 seems great, but generation doesn't match, have=400760, want=400984 level 0
...
Well block 9928704 seems great, but generation doesn't match, have=400764, want=400984 level 1
Well block 1094836224 seems great, but generation doesn't match, have=400983, want=400984 level 1
Found tree root at 1095270400 gen 400984 level 1

Finalmente puedes usar btrfs restore con -r para la recuperación (inicialmente con el --dry-run argumento si lo desea):

# btrfs restore -r  -t 9928704 -v --path-regex '^/(|dir1(|/dir2(|/dir3(|/.*))))$' /dev/sdXY /tmp/recovery

Más información sobre todo esto aquí: https://btrfs.wiki.kernel.org/index.php/Restore

Reseñas y calificaciones

Si sostienes algún reparo o capacidad de medrar nuestro crónica te evocamos dejar una crítica y con gusto lo interpretaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 3.5)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *