GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Modo per recuperare un file che ho eliminato ma è ancora aperto da qualche parte?

Questa domanda è correlata a Come recuperare i file cancellati? ma è di natura leggermente diversa.

Supponiamo di avere un file chiamato ~/something apri in un editor di testo. Supponiamo inoltre di aprire un terminale ed eseguire il seguente comando mentre il file è ancora aperto nell'editor di testo:

rm ~/something

Questo cancellerà il file. Supponiamo ora di aver cambiato idea e di voler recuperare il file. Il file è ancora aperto nell'editor di testo, quindi non è stato ancora rimosso dal disco o dal filesystem .

C'è un modo per recuperarlo?

Risposta accettata:

Non so se ci sono editor di testo che mantengono aperto il file mentre lo stai modificando. Normalmente (cioè in Emacs), il file viene letto in un buffer nella RAM e quindi il file viene chiuso. Si modifica solo nella RAM. Quando si salva il buffer, il file viene aperto, scritto e chiuso di nuovo. Puoi usare ps auxw | grep your_editor per trovare il PID del tuo editor, quindi lsof -p your_PID per vedere i file ancora aperti.

D'altra parte, se il file è ancora nel buffer del tuo editor, puoi semplicemente salvarlo.

Ma non era la tua domanda, quindi facciamo finta che tu stia usando cat come editor e il file è ancora aperto:

% 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

Puoi usare lsof -n per vedere tutti i file aperti e grep per cercare il tuo nome file.

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

Nella seconda colonna puoi vedere il PID del tuo cat comando. Puoi passare alla directory corrispondente nel filesystem /proc e in fd (descrittore di file) sottodirectory:

% 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

Ora puoi semplicemente copiare il "file" 1 in un altro file:

% cp 1 ~/tmp/the_old_file.txt

E guarda, è lì:

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

Ubuntu
  1. Come reindirizzare l'output di un programma e continuare a farlo andare a Stdout?

  2. Come aprire un file di modulo PDF che dice Attendi...?

  3. Recuperare un file cancellato??

  4. Come recuperare file aperti ma cancellati su Linux usando ln invece di cp?

  5. l'eliminazione dei file ma lo spazio su disco è ancora pieno

Come aprire un file in Linux

Come recuperare file cancellati in Ubuntu tramite TestDisk

Un modo semplice per recuperare i file cancellati in Ubuntu con PhotoRec

Come usare Linux per recuperare file cancellati

Comportamento di rsync con il file che è ancora in fase di scrittura?

Ho disabilitato il file di configurazione del sito Apache 000-default.conf, ma sembra ancora attivo. Come mai?