GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Möglichkeit, eine Datei wiederherzustellen, die ich gelöscht habe, aber noch irgendwo geöffnet ist?

Diese Frage bezieht sich auf Wie kann man gelöschte Dateien wiederherstellen? aber es ist etwas anders in der Natur.

Angenommen, ich habe eine Datei namens ~/something in einem Texteditor öffnen. Angenommen, ich öffne ein Terminal und führe den folgenden Befehl aus, während die Datei noch im Texteditor geöffnet ist:

rm ~/something

Dadurch wird die Datei gelöscht. Nehmen wir nun an, ich hätte meine Meinung geändert und wollte die Datei zurückbekommen. Die Datei ist immer noch im Texteditor geöffnet, sie wurde also noch nicht von der Festplatte oder dem Dateisystem entfernt .

Gibt es eine Möglichkeit, es wiederherzustellen?

Akzeptierte Antwort:

Ich weiß nicht, ob es Texteditoren gibt, die die Datei geöffnet lassen, während Sie sie bearbeiten. Normalerweise (d.h. in Emacs) wird die Datei in einen Puffer im RAM gelesen und dann wird die Datei geschlossen. Sie bearbeiten nur im RAM. Wenn Sie den Puffer speichern, wird die Datei geöffnet, geschrieben und wieder geschlossen. Sie können ps auxw | grep your_editor um die PID Ihres Editors zu finden, dann lsof -p your_PID um die noch offenen Dateien zu sehen.

Befindet sich die Datei hingegen noch im Puffer Ihres Editors, können Sie sie einfach speichern.

Aber das war nicht Ihre Frage, also nehmen wir an, Sie verwenden cat als Ihr Editor, und die Datei ist wirklich noch offen:

% 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

Sie können lsof -n verwenden um alle geöffneten Dateien zu sehen und grep um nach Ihrem Dateinamen zu suchen.

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

In der zweiten Spalte sehen Sie die PID Ihrer cat Befehl. Sie können in das entsprechende Verzeichnis im /proc-Dateisystem und in den fd wechseln (Dateideskriptor) Unterverzeichnis:

% 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

Jetzt können Sie einfach die „Datei“ 1 kopieren in eine andere Datei:

% cp 1 ~/tmp/the_old_file.txt

Und siehe da, es ist da:

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

Ubuntu
  1. Große Dateien finden und entfernen, die geöffnet sind, aber gelöscht wurden?

  2. Möglichkeit, die Ausgabe eines Programms umzuleiten und trotzdem nach Stdout zu gehen?

  3. Wie öffnet man eine PDF-Formulardatei mit der Aufschrift „Bitte warten…“?

  4. Wie öffne ich eine .8-Datei mit Man?

  5. Dateien finden, deren Nummer im Dateinamen größer als ist

So öffnen Sie eine Datei unter Linux

So stellen Sie gelöschte Dateien in Ubuntu über TestDisk wieder her

Einfache Möglichkeit, gelöschte Dateien in Ubuntu mit PhotoRec wiederherzustellen

Eine gelöschte Datei wiederherstellen??

So verwenden Sie Linux zum Wiederherstellen gelöschter Dateien

Habe die Apache-Site-Konfigurationsdatei 000-default.conf deaktiviert, aber sie scheint immer noch aktiv zu sein. Wieso den?