1 votos

¿Cómo puedo descubrir qué archivos se han borrado con `rm -rf`?

He tenido un pequeño problema al ejecutar un script: este script lee un archivo de configuración en $HOME y tenía ~/Downloads en su interior.

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 Lo hice. rm -rf ~ . Después de 1-2s me di cuenta de mi error y dejé de usar ˆ-C - estaba borrando mi $HOME .

Sé que se han borrado algunos archivos, pero no sé cuáles. Algunos archivos ocultos (bash_functions, bash_aliases) fueron eliminados y tenía una copia de seguridad, pero algunos archivos en $HOME no están respaldados.

Hice una rápida verificación en mis archivos (viendo las fechas de modificación de la carpeta en $HOME ), es parecía Está 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á la bandera de "modificado" para esa carpeta, pero sólo si un hijo directo de esa carpeta fue cambiado. Ejemplo:

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

Así que, si cambias file.txt , ~/Downloads tendrá su bandera modificada, pero si cambias music.mp3 , ~/Downloads no tendrá su bandera modificada.

Así que aquí está el problema: no sé cómo rm -rf empieza a borrar mis archivos. ¿Es de forma secuencial? ¿Es en un orden arbitrario? ¿Podría ser que empezara a borrar ~/Pictures/Wedding y de repente fue a hacer ~/Videos ? No lo sé. Creo que no borra secuencialmente, así que ahora puedo tener un directorio muy profundo sin archivos importantes después de mi rm -rf error.

¿Hay algún lugar en el mac donde todos los archivos borrados con rm -rf ¿se conservan (sólo los nombres de los archivos)? No encontré nada de eso, así que hice

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

en mi terminal desde que hice el error rm -rf hoy. El resultado de la find las carpetas modificadas (si elimina un archivo, Mac cambia la bandera modificada de su carpeta padre directa) parece no tener una estructura "profundamente arbitraria" como ~/Pictures/Personal/Birthday/2010/Cake ... puedo entonces asumir rm -rf no tocó los archivos erróneos y pude detener el armagedón con sólo parar rm -rf ~ después de 1-2s (por lo que eliminó sólo algunos de los archivos ocultos en $HOME )?

(Ya he reiniciado mi máquina y funciona bien. Estoy en Snow Leopard, así que tmutil no es una solución, creo...)

(Ya conozco algunas soluciones para recuperar como TestDisk existen, pero estoy tratando de utilizarlo como una última aproximación (si me equivoco en mis suposiciones sobre el find fragmento).

4voto

Brian Stewart Puntos 4553

No hay forma de saber con certeza qué archivos se han eliminado exactamente. No hay una lista almacenada, ni una papelera, esto es unix (bueno BSD) y no tienes ninguna segunda oportunidad con rm -rf

Sin embargo, como has visto, puedes inferir lo que podría haber sido borrado primero observando el comportamiento del comando rm.

Creé una carpeta con unas cuantas subcarpetas, incluyendo algunas con un punto al principio del nombre y eché unos cuantos archivos en cada una.

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

Si comparas una copia de seguridad con tu estructura de directorios, una vez que te has movido por orden alfabético y has empezado a encontrar archivos en la copia de seguridad que todavía están en tu unidad principal, creo que puedes estar seguro de que no te has perdido ningún otro archivo.

3voto

Oskar Puntos 1242

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

A mi entender, la situación descrita tiene las siguientes opciones:

  • contratar un software de recuperación para intentar encontrar fragmentos de archivos o datos que se parezcan a las entradas de archivos / inodos y filtrar esos resultados para posibles archivos modificados en el rango de tiempo del rm.
  • comparar la estructura de directorios actual con una copia de seguridad reciente ( tmutil compare sería una herramienta ideal para Lion, pero puede utilizar BackupLoupe u otras si su copia de seguridad es TimeMachine)

2voto

shsteimer Puntos 8749

¿Hay algún lugar en el mac donde se guarden todos los archivos borrados con rm -rf (sólo los nombres de los archivos)?

Como otros ya han señalado: no existe tal lugar, a menos que tengas tu sistema de archivos configurado con auditoría y snapshotting.

Sin embargo, puedes utilizar Time Machine para averiguar qué ha cambiado. Usted estaba tomando una copia de seguridad regular de Time Machine de su unidad que contenía su directorio de inicio, ¿verdad?

Si es así: abra Time Machine para su directorio de inicio y retroceda en el tiempo hasta justo antes de ejecutar el rm . Debería poder ver los archivos que han cambiado o que faltan. E incluso restaurarlos. No es un gran en el sistema, pero servirá en caso de necesidad.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X