Archivos borrados accidentalmente usando GNU find -delete: ¿cómo recuperarlos?


1

Estaba jugando con OSX findy GNU finddesde el findutilspaquete (v 4.4.2) con fines de aprendizaje. GNU find tiene una -deleteopción, que se explica por sí misma. Lo que no es, sin embargo, es que "El uso de -delete activa automáticamente la opción -depth", lo que significa que eliminará recursivamente el contenido del directorio de trabajo actual sin advertencia.

El problema es que accidentalmente ejecuté dicho comando en mi sistema, en lugar de la sesión de shell remota.

Traté de investigar los aspectos internos, -deletepero todo lo que pude encontrar fue documentos oficiales de GNU findutils .

Cuando me di cuenta de lo que sucedió, apagué el sistema para evitar la posible sobrescritura de sectores. Luego, tomé un "enfoque de recuperación estándar" usando

  • EaseUS Data Recovery Wizard para Mac
  • Prosoft Data Rescue 3
  • Taladro de disco
  • Mac Data Recovery Guru

pero sin resultados. El directorio eliminado era en realidad un repositorio git con muchos archivos pequeños. Dado que se realizó una operación de disco cercana a cero desde la eliminación, dudo que todos puedan sobrescribirse. No es una situación desastrosa porque obviamente estoy sacando el contenido del repositorio de forma remota. Aún así, pierdo ramas y archivos locales no publicados en .gitignore.

¿Hay algún mecanismo OSX que pueda usar para recuperar estos archivos?


Did a Time Machine backup run at some point before and close to the deletion? It might contain the files you're after.
Saaru Lindestøkke

No, Time Machine is disabled.
cellardoor_ncx

Respuestas:


1

OS X maintains deleted files in the local time machine storage area if you have enabled (or the system has enabled) a local store.

tmutil snapshot

If you can make a snapshot, you can enter Time Machine and recover these files. If you get an error like **Local snapshots are not enabled. ** then you don't have the ability to recover the files from the OS level. Since there is no other undelete mechanism in the filesystem, you have a good survey of recovery tools (I use Data Rescue pretty much exclusively) and your only third option would be to locate a viable backup of the system or the files in question.

I make a habit of enabling the local store and forcing a snapshot before doing anything as root or anything I might regret from the terminal. Having made mistakes like this over the years, I've learned to have that "premonition" to check backup and double check the syntax. In general, I try to make a list of files to delete and save it to a file so I have a pause and a second script that does the removal rather than piping them together. It's not going to help, but it's my experience and way to mitigate when I can't ensure a good backup.

sudo tmutil enablelocal
sleep 8 && tmutil snapshot

Thank you for the tips. Of course, I do backup critical parts of the system. However, with git repos being distributed by nature - it's excluded. Time Machine was never enabled on the system though.
cellardoor_ncx

@cellardoor_ncx I always feel bad when writing - use your backup, when it's clear from the level of technical detail in the question that this isn't an option. Since the mobile backups can get enabled automatically, it's a wonderful discovery when it saves your bacon and you didn't count on it.
bmike
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.