Linux

Unix/Linux 取消刪除/恢復已刪除的文件

  • March 3, 2022

是否有命令來恢復/取消刪除已刪除的文件rm

$ rm -rf /path/to/myfile

我怎樣才能恢復myfile?如果有這樣的工具,我該如何使用它?

評論中某人提供的連結可能是您最好的機會。

Linux debugfs Hack:取消刪除文件

這篇文章雖然看起來有點嚇人,但實際上是相當直截了當的。一般來說,步驟如下:

  1. 使用 debugfs 查看文件系統日誌
$ debugfs -w /dev/mapper/wks01-root
  1. 在 debugfs 提示符下
debugfs: lsdel
  1. 樣本輸出
Inode  Owner  Mode    Size    Blocks   Time deleted
23601299      0 120777      3    1/   1 Tue Mar 13 16:17:30 2012
7536655      0 120777      3    1/   1 Tue May  1 06:21:22 2012
2 deleted inodes found.
  1. 在 debugfs 中執行命令
debugfs: logdump -i <7536655>
  1. 確定文件inode
...
...
....
output truncated
   Fast_link_dest: bin
   Blocks:  (0+1): 7235938
 FS block 7536642 logged at sequence 38402086, journal block 26711
   (inode block for inode 7536655):
   Inode: 7536655   Type: symlink        Mode:  0777   Flags: 0x0   Generation: 3532221116
   User:     0   Group:     0   Size: 3
   File ACL: 0    Directory ACL: 0
   Links: 0   Blockcount: 0
   Fragment:  Address: 0    Number: 0    Size: 0
   ctime: 0x4f9fc732 -- Tue May  1 06:21:22 2012
   atime: 0x4f9fc730 -- Tue May  1 06:21:20 2012
   mtime: 0x4f9fc72f -- Tue May  1 06:21:19 2012
   dtime: 0x4f9fc732 -- Tue May  1 06:21:22 2012
   Fast_link_dest: bin
   Blocks:  (0+1): 7235938
No magic number at block 28053: end of journal.
  1. 使用上面的 inode 資訊執行以下命令
# dd if=/dev/mapper/wks01-root of=recovered.file.001 bs=4096 count=1 skip=7235938
# file recovered.file.001
file: ASCII text, with very long lines

文件已恢復到recovered.file.001.

其他選項

如果以上內容不適合您,我過去曾使用過諸如photorec恢復文件之類的工具,但它僅適用於圖像文件。我已經在我的部落格中廣泛地寫了關於這種方法的這篇文章,標題為:

如何在 Fedora/CentOS/RHEL 上從數位相機的 SDD 卡中恢復損壞的 jpeg 和 mov 文件

引用自:https://unix.stackexchange.com/questions/80270