Recuperar archivos borrados en Mac por línea de comando


24

Accidentalmente eliminé un archivo ejecutando:

rm -rf ./Desktop/myScript.sh

Creo que es posible recuperar el archivo, porque el rmcomando se elimina temporalmente. ¿Cómo puedo recuperar el archivo eliminado en Mac OSX?


1
Querrá buscar herramientas de recuperación de HFS +, suponiendo que esté utilizando HFS +. El sitio de Apple SE probablemente sepa más.
derobert

1
Anecdótico, pero mi suegro eliminó accidentalmente un gran directorio de fotos en Mac OS X, y logró recuperar la mayoría de ellas utilizando una herramienta que descargó (creo que costó dinero, pero tuve un juicio por uno o dos archivos , para que pueda probar si va a funcionar, y en su caso eso sería suficiente). discussions.apple.com/thread/...
ire_and_curses

Respuestas:


28

MacOS es un sistema operativo Unix y rmsignifica "adiós". La interfaz GUI le permite mover un archivo a la papelera (que luego puede recuperar), pero eso no fue lo que hizo. Si tiene una copia de seguridad (p. Ej., Tiene Time Machine ejecutándose), entonces está guardado.

Aclaración

Estrictamente hablando (como señala @ire_and_curses) a rmsimplemente elimina la entrada del directorio para el archivo y deja intactos los bloques de disco que usó. Si pudiera detener el sistema de archivos en el que se encontraba el archivo, existen métodos avanzados mediante los cuales puede intentar volver a descubrir el contenido de esos bloques. También hay algunas herramientas de recuperación que se pueden comprar para recuperar la pérdida. El problema central es que nada más reutiliza ninguno de los bloques de disco representados por su archivo.

MacOS también tiene un comando seguro de eliminación ( srm) que sobrescribe un archivo antes de unlinkeditarlo, lo que lo hace irrecuperable. Uso el unlinktérmino ya que esta es la llamada del sistema subyacente asociada con el rmcomando de un shell . Esto prepara el escenario para la siguiente parte de esta discusión, a continuación.

Nota al margen

[Debería apresurarme a agregar que incluso si sobrescribe un disco varias veces, hay formas de leer lo que se escribió una docena o más veces antes. Para desinfectar adecuadamente un disco para su eliminación, realmente se requiere un baño de ácido, un gran martillo y una trituradora. ]

unlinkSi ingiere un archivo, disminuye el número de enlaces de inodo del archivo. Si este valor llega a cero, el archivo se elimina del directorio del sistema de archivos y sus bloques de disco se liberan para su reutilización. Esto solo sucede cuando ningún proceso tiene el archivo abierto. A menudo es confuso para los administradores descubrir que un sistema de archivos está utilizando una gran cantidad de espacio que no puede explicarse por la simple suma de bloques de disco (con algo parecido du). La razón más frecuente es que se ha eliminado un archivo abierto, por lo que ya no está representado en su directorio. La razón es que los bloques de disco permanecen en uso hasta que finaliza el último proceso que utiliza el archivo.

Abrir un archivo e inmediatamente unlinkusarlo es en realidad una práctica común para crear archivos seguros y temporales. Herramientas como lsofpueden exponer estos archivos invisibles si busca archivos con un recuento de enlaces (NLINK) de cero.

En Unix y Linux (de los cuales MacOS es un Unix de marca), rmsigue la filosofía de Unix de "hacerlo" sin fanfarria si es posible. Es decir, si tiene los permisos para eliminar un archivo (es decir, su directorio permite la escritura), entonces rmhace exactamente lo que le pide. Es posible rm='rm -i'que desee crear un alias de shell que le solicite confirmación antes de realizar la operación. Usando el -finterruptor con rmanulaciones que si es necesario. Un alias rmes más útil cuando globelimina eliminaciones rm *.log. Es decir, tiene la opción de omitir un archivo en la lista.


Bien hecho en la sección de "aclaraciones".
Tim

La función de "eliminación segura de basura" de Mac OS utiliza un patrón investigado para borrar realmente los pozos cuánticos en los discos giratorios modernos. En el almacenamiento en estado sólido, utiliza la funcionalidad de "recorte" para colocar los bloques de almacenamiento asociados con el archivo en la cabecera de la cola "para ser borrados" en el controlador de almacenamiento. Úselos si realmente desea que el contenido de su disco, pero tenga en cuenta que tardan mucho tiempo en fregar un disco giratorio.
Wexxor

4

Dependiendo de su contenido, pero puede usar diferentes softwares de terceros para hacer eso, por ejemplo:

y muchos más.

Puede encontrar más aplicaciones escribiendo 'recuperación de datos' en App Store.


La forma más avanzada es iniciar su OSX en modo de recuperación (o desmontar su partición si puede) y buscarla manualmente (si recuerda algún texto específico de su script).

Algun ejemplo:

diskutil list
sudo cat /dev/disk0s2 | strings | grep -C20 "my_stuff"

1
Usé Wondershare y recuperé algo de código I "git clean -f" 'd
fionbio

2
A partir de 2019, el truco de escaneo del dispositivo de bloque es imposible o más difícil de hacer en OSX ahora debido al cifrado APFS. Sin embargo, tengo datos exitosos de esa manera en Linux: P
primehunter326
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.