¿Cómo puedo descubrir qué archivos se eliminaron con 'rm -rf'?

1

Tuve un pequeño problema al ejecutar un script: este script lee un archivo de configuración en $HOME , y tenía ~/Downloads dentro.

En lugar de guardar un archivo dentro de ~/Downloads cuando ejecuté el script, ya que lo ejecuté dentro de ~/Library , creó ~/Library/~/Downloads .

Dentro de ~/Library , hice rm -rf ~ . Después de 1 o 2 segundos, me di cuenta de mi error y dejé de usar ˆ-C . Estaba eliminando mi $HOME .

Sé que algunos archivos fueron eliminados, pero no sé cuáles. Se eliminaron algunos archivos ocultos (bash_functions, bash_aliases) y tuve una copia de seguridad, pero no se realizó una copia de seguridad de algunos archivos en $HOME .

Hice una verificación rápida en mis archivos (viendo las fechas modificadas de la carpeta en $HOME ), parecía bien, pero sé que no puedo confiar en mis ojos usando este enfoque.

Sé que si cambio un archivo dentro de una carpeta, Mac cambiará el indicador "modificado" para esa carpeta, pero solo si se cambió un elemento secundario directo de esa carpeta. Ejemplo:

~/Downloads
    - file.txt
    /Mp3
        - music.mp3

Por lo tanto, si cambias file.txt , a ~/Downloads se le cambiará su marca, pero si cambias a music.mp3 , a ~/Downloads no se le cambiará la bandera.

Aquí está el problema: no sé cómo rm -rf comienza a eliminar mis archivos. ¿Es secuencial? ¿Está en un orden arbitrario? ¿Podría ser que comenzó a eliminar ~/Pictures/Wedding y de repente se fue a hacer ~/Videos ? No lo sé. Creo que no se elimina de forma secuencial, por lo que ahora puedo tener un directorio realmente profundo sin archivos importantes después de mi error rm -rf .

¿Hay algún lugar en la Mac donde se guardan todos los archivos eliminados con rm -rf (solo los nombres de archivo)? No encontré nada de eso, así que lo hice

find ~ -type d -mtime -1 > modified_folders.txt

en mi terminal desde que cometí el error rm -rf hoy. El resultado del comando find , las carpetas modificadas (si elimina un archivo, la bandera modificada por Mac cambia la carpeta directa) parece no tener una estructura "arbitraria profunda" como ~/Pictures/Personal/Birthday/2010/Cake ... ¿puedo asumir entonces? rm -rf no tocó los archivos incorrectos y pude detener el armageddon solo al detener rm -rf ~ después de 1-2s (¿así que eliminó solo algunos de los archivos ocultos en $HOME )?

(Ya reinicié mi máquina, está funcionando bien. Estoy en Snow Leopard, así que tmutil no es una solución, creo ...)

(Ya sé que existen algunas soluciones para recuperar, como TestDisk , pero estoy intentando usarlo como último enfoque (si me equivoco en mis suposiciones sobre el fragmento de código find ).

    
pregunta Somebody still uses you MS-DOS 26.10.2011 - 21:43

3 respuestas

4

No hay forma de saber con certeza exactamente qué archivos se eliminaron. No hay una lista almacenada, ningún bote de basura, esto es Unix (bueno BSD) y no tienes buenas oportunidades con rm -rf

Sin embargo, como ha visto, puede inferir qué se pudo haber eliminado primero al observar el comportamiento del comando rm.

Creé una carpeta con algunas subcarpetas, incluidas algunas con un punto al principio del nombre y lancé algunos archivos en cada una.

El orden siempre es alfabético y los directorios con prefijo de período ocultos se eliminan primero.

Si compara una copia de seguridad con la estructura de su directorio, una vez que se haya movido alfabéticamente y haya comenzado a encontrar los archivos en la copia de seguridad que aún se encuentran en su unidad principal, creo que puede estar seguro de que no ha perdido ningún otro archivo. .

    
respondido por el Neil Trodden 26.10.2011 - 21:56
3

rm elimina la estructura de inodo / entradas de directorio sin hacer un registro. Se guardaría si tiene activada la auditoría de archivos, pero eso no es algo predeterminado en Mac OS X.

Para mi toma de la situación descrita, tiene las siguientes opciones:

  • comprometa un software recuperado para intentar encontrar fragmentos de archivos o datos que se asemejen a entradas / inodos de archivos y filtre esos resultados para los posibles archivos modificados en el rango de tiempo de la rm.
  • compare la estructura actual del directorio con una copia de seguridad reciente ( tmutil compare sería una herramienta ideal de Lion, pero puede usar BackupLoupe u otros si su copia de seguridad es TimeMachine)
respondido por el bmike 26.10.2011 - 21:50
2
  

¿Hay algún lugar en el mac donde se guardan todos los archivos eliminados con rm -rf (solo los nombres de archivo)?

Como ya lo han señalado otros: no existe tal lugar a menos que haya configurado su sistema de archivos con auditorías e instantáneas.

Sin embargo, puedes usar Time Machine para descubrir qué ha cambiado. Estaba tomando una copia de seguridad de Time Drive de su disco que contenía su directorio personal, ¿no?

Si es así: abra Time Machine para su directorio de inicio y retroceda en el tiempo justo antes de ejecutar rm . Debería poder ver los archivos que han cambiado o faltan. E incluso restaurarlos. No es una vista excelente en el sistema, pero funcionará si no queda más remedio.

    
respondido por el Ian C. 27.10.2011 - 04:52

Lea otras preguntas en las etiquetas