GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Cómo recuperar un archivo que eliminé pero aún está abierto en alguna parte?

Esta pregunta está relacionada con ¿Cómo recuperar archivos borrados? pero es ligeramente diferente en naturaleza.

Supongamos que tengo un archivo llamado ~/something abrir en un editor de texto. Además, suponga que abro una terminal y ejecuto el siguiente comando mientras el archivo aún está abierto en el editor de texto:

rm ~/something

Esto eliminará el archivo. Ahora suponga que cambié de opinión y quería recuperar el archivo. El archivo aún está abierto en el editor de texto, por lo que aún no se ha eliminado del disco o del sistema de archivos .

¿Hay alguna forma de recuperarlo?

Respuesta aceptada:

No sé si hay algún editor de texto que mantenga el archivo abierto mientras lo editas. Normalmente (es decir, en Emacs), el archivo se lee en un búfer en la RAM y luego se cierra. Editas solo en RAM. Cuando guarda el búfer, el archivo se abre, se escribe y se cierra de nuevo. Puede utilizar ps auxw | grep your_editor para encontrar el PID de su editor, entonces lsof -p your_PID para ver los archivos que todavía están abiertos.

Por otro lado, si el archivo aún está en el búfer de su editor, simplemente puede guardarlo.

Pero esa no era tu pregunta, así que supongamos que estás usando cat como su editor, y el archivo todavía está realmente abierto:

% cat >the_file.txt
Hello world!
^Z
zsh: suspended  cat > the_file.txt
% rm the_file.txt 
% ls -l the_file.txt
ls: cannot access the_file.txt: No such file or directory

Puedes usar lsof -n para ver todos los archivos abiertos y grep para buscar su nombre de archivo.

% lsof -n | grep the_file.txt
cat  2145  elmicha  1w  REG  9,1  13 108003357 /home/elmicha/tmp/the_file.txt (deleted)

En la segunda columna puedes ver el PID de tu cat dominio. Puede cambiar al directorio correspondiente en el sistema de archivos /proc y al fd (descriptor de archivo) subdirectorio:

% cd /proc/2145/fd
% ls -l
total 0
lrwx------ 1 elmicha elmicha 64 2012-11-07 00:22 0 -> /dev/pts/4
l-wx------ 1 elmicha elmicha 64 2012-11-07 00:22 1 -> /home/elmicha/tmp/the_file.txt (deleted)
lr-x------ 1 elmicha elmicha 64 2012-11-07 00:22 15 -> /proc/4501/auxv
lrwx------ 1 elmicha elmicha 64 2012-11-07 00:22 2 -> /dev/pts/4

Ahora puedes simplemente copiar el "archivo" 1 a otro archivo:

% cp 1 ~/tmp/the_old_file.txt

Y mira, está ahí:

% cat ~/tmp/the_old_file.txt
Hello world!

Ubuntu
  1. ¿Buscar y eliminar archivos grandes que están abiertos pero se han eliminado?

  2. ¿Qué forma de redirigir la salida de un programa y todavía hacer que vaya a la salida estándar?

  3. ¿Cómo abrir un archivo de formulario PDF que dice Por favor, espere...?

  4. encontrar archivos que tengan un número en el nombre de archivo mayor que

  5. Recuperar el archivo eliminado que se está escribiendo actualmente

Cómo recuperar un archivo eliminado en Linux

Cómo abrir un archivo en Linux

Cómo recuperar archivos borrados en Ubuntu a través de TestDisk

Manera fácil de recuperar archivos borrados en Ubuntu con PhotoRec

Cómo usar Linux para recuperar archivos borrados

He deshabilitado el archivo de configuración del sitio de apache 000-default.conf, pero aún parece estar activo. ¿Por qué?