GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak obnovit soubor, který jsem smazal, ale je stále někde otevřený?

Tato otázka souvisí s tématem Jak obnovit smazané soubory? ale má trochu jinou povahu.

Předpokládejme, že mám soubor s názvem ~/something otevřít v textovém editoru. Dále předpokládejme, že otevřu terminál a spustím následující příkaz, zatímco je soubor stále otevřený v textovém editoru:

rm ~/something

Tím se soubor smaže. Předpokládejme, že jsem si to rozmyslel a chtěl soubor získat zpět. Soubor je stále otevřený v textovém editoru, takže ještě nebyl odstraněn z disku nebo souborového systému .

Existuje nějaký způsob, jak jej obnovit?

Přijatá odpověď:

Nevím, zda existují nějaké textové editory, které udržují soubor otevřený, když jej upravujete. Normálně (tj. v Emacsu) je soubor načten do vyrovnávací paměti v RAM a poté je soubor uzavřen. Upravujete pouze v RAM. Když uložíte vyrovnávací paměť, soubor se otevře, zapíše a znovu zavře. Můžete použít ps auxw | grep your_editor k nalezení PID vašeho editoru pak lsof -p your_PID zobrazíte soubory, které jsou stále otevřené.

Na druhou stranu, pokud je soubor stále ve vyrovnávací paměti vašeho editoru, můžete jej uložit.

Ale to nebyla vaše otázka, takže předstírejme, že používáte cat jako váš editor a soubor je skutečně stále otevřený:

% 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

Můžete použít lsof -n pro zobrazení všech otevřených souborů a grep pro vyhledání vašeho souboru.

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

Ve druhém sloupci můžete vidět PID vaší cat příkaz. Můžete přejít do odpovídajícího adresáře v souborovém systému /proc a do fd (deskriptor souboru) podadresář:

% 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

Nyní stačí zkopírovat „soubor“ 1 do jiného souboru:

% cp 1 ~/tmp/the_old_file.txt

A vidíte, je to tam:

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

Ubuntu
  1. najít soubory, které mají číslo v názvu souboru větší než

  2. Chování rsync se souborem, který se stále zapisuje?

  3. Obnovte smazaný soubor, do kterého se právě zapisuje

  1. Jak obnovit smazaný soubor v Linuxu

  2. Unix/Linux obnovit/obnovit smazané soubory

  3. Jak získat zpět úložiště smazaných, ale stále používaných souborů v systému Linux?

  1. Najít a odstranit velké soubory, které jsou otevřené, ale byly smazány?

  2. Způsob, jak přesměrovat výstup programu, a přesto jej přejít na Stdout?

  3. Jak otevřít soubor formuláře Pdf, který říká Čekejte prosím…?