GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Memulihkan File Yang Telah Saya Hapus Tetapi Masih Terbuka Di Suatu Tempat?

Pertanyaan ini terkait dengan Bagaimana memulihkan file yang terhapus? tapi sifatnya sedikit berbeda.

Misalkan saya memiliki file bernama ~/something buka di editor teks. Selanjutnya misalkan saya membuka terminal dan menjalankan perintah berikut saat file masih terbuka di editor teks:

rm ~/something

Ini akan menghapus file. Sekarang anggaplah saya berubah pikiran dan ingin mendapatkan kembali file tersebut. File masih terbuka di editor teks, jadi belum dihapus dari disk atau sistem file .

Apakah ada cara untuk memulihkannya?

Jawaban yang Diterima:

Saya tidak tahu apakah ada editor teks yang membuat file tetap terbuka saat Anda mengeditnya. Biasanya (yaitu di Emacs), file dibaca ke dalam buffer di RAM dan kemudian file ditutup. Anda hanya mengedit di RAM. Saat Anda menyimpan buffer, file dibuka, ditulis, dan ditutup kembali. Anda dapat menggunakan ps auxw | grep your_editor untuk menemukan PID editor Anda, lalu lsof -p your_PID untuk melihat file yang masih terbuka.

Di sisi lain, jika file tersebut masih dalam buffer editor Anda, Anda dapat menyimpannya.

Tapi itu bukan pertanyaan Anda, jadi anggap saja Anda menggunakan cat sebagai editor Anda, dan file tersebut benar-benar masih terbuka:

% 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

Anda dapat menggunakan lsof -n untuk melihat semua file yang dibuka dan grep untuk mencari nama file Anda.

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

Di kolom kedua Anda dapat melihat PID cat Anda memerintah. Anda dapat mengubah ke direktori yang sesuai di sistem file /proc, dan ke fd (deskriptor file) subdirektori:

% 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

Sekarang Anda cukup menyalin "file" 1 ke file lain:

% cp 1 ~/tmp/the_old_file.txt

Dan lihat, itu ada di sana:

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

Ubuntu
  1. Temukan Dan Hapus File Besar Yang Terbuka Tetapi Telah Dihapus?

  2. Cara Mengarahkan Keluaran Program Dan Masih Melanjutkannya ke Stdout?

  3. Bagaimana Cara Membuka File Formulir Pdf Yang Mengatakan Harap Tunggu ...?

  1. Bagaimana Cara Membuka File .8 Dengan Man?

  2. Pulihkan File yang Dihapus??

  3. Bagaimana memulihkan file yang terhapus jika masih dibuka oleh beberapa proses?

  1. menghapus file tetapi ruang disk masih penuh

  2. Perilaku rsync dengan file yang masih ditulis?

  3. Pulihkan file yang dihapus yang saat ini sedang ditulis