¿Existe un comando para recuperar / recuperar archivos borrados rm
?
$ rm -rf /path/to/myfile
¿Cómo me puedo recuperar myfile
? Si existe tal herramienta, ¿cómo puedo usarla?
¿Existe un comando para recuperar / recuperar archivos borrados rm
?
$ rm -rf /path/to/myfile
¿Cómo me puedo recuperar myfile
? Si existe tal herramienta, ¿cómo puedo usarla?
Respuestas:
El enlace que alguien proporcionó en los comentarios es probablemente su mejor oportunidad.
Hack de Linux debugfs: Recuperar archivos
Ese artículo, aunque parece un poco intimidante, es bastante sencillo de seguir. En general, los pasos son los siguientes:
Use debugfs para ver un registro de sistemas de archivos
$ debugfs -w /dev/mapper/wks01-root
En el indicador de depuración
debugfs: lsdel
Salida de muestra
Inode Owner Mode Size Blocks Time deleted
23601299 0 120777 3 1/ 1 Tue Mar 13 16:17:30 2012
7536655 0 120777 3 1/ 1 Tue May 1 06:21:22 2012
2 deleted inodes found.
Ejecute el comando en debugfs
debugfs: logdump -i <7536655>
Determinar archivos inode
...
...
....
output truncated
Fast_link_dest: bin
Blocks: (0+1): 7235938
FS block 7536642 logged at sequence 38402086, journal block 26711
(inode block for inode 7536655):
Inode: 7536655 Type: symlink Mode: 0777 Flags: 0x0 Generation: 3532221116
User: 0 Group: 0 Size: 3
File ACL: 0 Directory ACL: 0
Links: 0 Blockcount: 0
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x4f9fc732 -- Tue May 1 06:21:22 2012
atime: 0x4f9fc730 -- Tue May 1 06:21:20 2012
mtime: 0x4f9fc72f -- Tue May 1 06:21:19 2012
dtime: 0x4f9fc732 -- Tue May 1 06:21:22 2012
Fast_link_dest: bin
Blocks: (0+1): 7235938
No magic number at block 28053: end of journal.
Con la información de inodo anterior, ejecute los siguientes comandos
# dd if=/dev/mapper/wks01-root of=recovered.file.001 bs=4096 count=1 skip=7235938
# file recovered.file.001
file: ASCII text, with very long lines
Archivos recuperados a recovered.file.001
.
Si lo anterior no es para ti, he usado herramientas como photorec
recuperar archivos en el pasado, pero está orientado solo a archivos de imagen. He escrito mucho sobre este método en mi blog en este artículo titulado:
debugfs -w /dev/sdb2
pero lsdel
0 deleted inodes found.
extundelete
es más fácil para ext3 / 4 y probablemente conduciría a los mismos resultados.
/dev/mapper/wks01-root: No such file or directory while opening filesystem
¿De dónde sacaste esto /dev/mapper/wks01-root
?
Con un poco de posibilidades, a veces puedo recuperar archivos borrados con este script o la siguiente solución en la respuesta:
#!/bin/bash
if [[ ! $1 ]]; then
echo -e "Usage:\n\n\t$0 'file name'"
exit 1
fi
f=$(ls 2>/dev/null -l /proc/*/fd/* | fgrep "$1 (deleted" | awk '{print $9}')
if [[ $f ]]; then
echo "fd $f found..."
cp -v "$f" "$1"
else
echo >&2 "No fd found..."
exit 2
fi
Hay otro truco útil: si conoce un patrón en sus archivos eliminados, escriba alt+ sys+ resuopara reiniciar + volver a montar en solo lectura, luego con un live-cd, use grep
para buscar en el disco duro:
grep -a -C 500 'known pattern' /dev/sda | tee /tmp/recover
luego edite /tmp/recover
para conservar solo los archivos que tenía antes.
Oye, si con la filosofía de Unix todo son archivos, es hora de aprovechar esto, ¿no?
grep
solución basada es muy inteligente y funcionó para mí, incluso con el sistema de archivos aún montado. ¡Gracias!
grep -av "[^[:print:]]"
grep
solución funcionó para mí con una modificación: lo hice sudo grep --line-buffered -ab "$PATTERN" /dev/sda1 | tee lines
y obtuve compensaciones de bytes (como 123123123:line\n456456456:another\n...
), luego lo hice n=1000; sudo dd of=before if=/dev/sda1 ibs=1 skip=$[123123123-$n] count=$n
y n=1000; sudo dd of=after if=/dev/sda1 ibs=1 skip=123123123 count=$n
con diferentes n
valores.
Lo que funcionó para mí fue dada por arco (sólo se aplica a archivos de texto):
grep -a -C 200 -F 'Unique string in text file' /dev/sdXN
donde /dev/sdXN
está la partición que contiene el archivo perdido (verifique mount
si no está seguro).
¡Toma un poco de tiempo, pero funcionó cuando borré accidentalmente un código fuente que aún no había confirmado!
rm data/*.json python myFile.py
lugar derm data/*.json && python myFile.py
/dev/sdXN
es para el sistema de archivos, ¿verdad? Encontré la mía condf -T | awk '{print $1,$2,$NF}' | grep "^/dev"
grep: conflicting matchers specified
Aunque esta pregunta está resuelta y tiene algunos años, quiero mencionar la utilidad testdisk .
Cómo recuperar archivos con testdisk se explica bien en este tutorial . Para recuperar archivos, ejecute testdisk /dev/sdX
y seleccione su tipo de tabla de particiones. Después de esto, seleccione [ Advanced ] Filesystem Utils
, luego elija su partición y seleccione [Undelete]
. Ahora puede explorar y seleccionar archivos eliminados y copiarlos a otra ubicación en su sistema de archivos.
Tuve el mismo problema la semana pasada y probé muchos programas, como debugfs, photorec, ext3grep y extundelete. ext3grep fue el mejor programa para recuperar archivos. La sintaxis es muy fácil:
ext3grep image.img --restore-all
o:
ext3grep /dev/sda3 --restore-all --after date -d '2015-01-01 00:00:00' '+%s' --before `date -d ‘2015-01-02 00:00:00’ ‘+%s’
Este video es un mini tutorial que puede ayudarte.
Se puede usar una alternativa en del
lugar de rm
eliminar:
http://fex.belwue.de/fstools/del.html
del
tiene una función de recuperación y funciona con cualquier sistema de archivos.
Por supuesto, no es una solución si ya ha eliminado sus archivos con "no tomar prisioneros" rm: -}
del
comando.
conectar la unidad a través de la interfaz externa
umount /dev/{sd*}
extundelete --restore-all /dev/{sd*}
Consulte este enlace para obtener más información: recuperar un archivo recién eliminado en ext4 con extundelete .
Herramientas de recuperación - Línea de comando:
Herramientas de recuperación - Gui:
Informaciones:
En mi experiencia personal, recupero mis datos utilizando ufs-explorer y photorec
(1) = No es de código abierto, no es gratis
(2) = No es de código abierto, gratis
(3) = Código abierto y gratuito
(4) = Tener soporte ntfs
(5) = Tiene función de estructura de directorio
No estoy de acuerdo con que sea imposible, simplemente muy, muy difícil, y tampoco lo he hecho desde Linux:
Cuando se eliminan los archivos, en realidad no se eliminan. Lo que sucede es que el espacio que tenían en el disco duro se reinicia, de modo que si la computadora intenta escribir datos allí, nada se queja. En general, los datos en su disco duro que pensó que eliminó pueden estar allí casi un año después. O al menos, esta es mi experiencia en una máquina con Windows. Si funciona o no de la misma manera desde una línea de comandos en Linux, no estoy seguro, pero es probable que necesite un Live CD por separado para abrir la partición así, y tampoco hay garantía de que los archivos sigan allí. He hecho esto en Windows XP varias veces usando Zero Assumption Recovery. Estoy seguro de que hay una herramienta similar si te fijas lo suficiente.
Cuando elimina un archivo, el recuento de enlaces en la tabla de inodo para ese archivo disminuye en uno. En Unix, cuando el recuento de enlaces cae a 0, los bloques de datos para ese archivo se marcan como libres y, por lo general, se pierden referencias a esos bloques de datos. Acabo de descubrir por el comentario de @ fedorqui que puede haber alguna forma de acceder a esos bloques, pero eso solo es aplicable al sistema de archivos ext3.
Una forma de preservar los archivos será escribir una función que le permita mover los archivos a un área de basura (digamos $HOME/.trash
) y recuperar los archivos necesarios desde allí. Esta función puede ser alias rm
. Puede programar un trabajo cron para eliminar los archivos que han estado en el área de la papelera durante un cierto número de días.
Esto podría ahorrarles problemas a algunos de ustedes.
Si alguna vez usó gedit para editar ese archivo, por defecto se creará una copia de ese archivo.
Por ejemplo, supongamos que hemos eliminado accidentalmente 'myfile.txt'.
En la carpeta que solía contener el archivo que acaba de eliminar, use estos comandos y recuperará la copia desde allí:
ls | grep 'myfile.txt~'
con un poco de suerte lo encontrará y luego:
cp 'myfile.txt~' 'myfile.txt'
He recuperado un archivo ahora mismo usando este método. ¡La mejor de las suertes!