9.7.10. 恢复已经删除但仍然被打开的文件

即使你不小心删除了某个文件,只要这个文件仍然被一些应用程序所使用(读或者写),恢复此文件是可能的。

尝试下列例子

  1. $ echo foo > bar
  2. $ less bar
  3. $ ps aux | grep 'less[ ]'
  4. bozo 4775 0.0 0.0 92200 884 pts/8 S+ 00:18 0:00 less bar
  5. $ rm bar
  6. $ ls -l /proc/4775/fd | grep bar
  7. lr-x------ 1 bozo bozo 64 2008-05-09 00:19 4 -> 2 /home/bozo/bar (deleted)
  8. $ cat /proc/4775/fd/4 > 3bar
  9. $ ls -l
  10. -rw-r--r-- 1 bozo bozo 4 2008-05-09 00:25 bar
  11. $ cat bar
  12. foo

当你安装了 lsof 软件包的时候,在另外一个终端执行如下命令。

  1. $ ls -li bar
  2. 2228329 -rw-r--r-- 1 bozo bozo 4 2008-05-11 11:02 bar
  3. $ lsof |grep bar|grep less
  4. less 4775 bozo 4r REG 8,3 4 2228329 /home/bozo/bar
  5. $ rm bar
  6. $ lsof |grep bar|grep less
  7. less 4775 bozo 4r REG 8,3 4 2228329 /home/bozo/bar (deleted)
  8. $ cat /proc/4775/fd/4 > bar
  9. $ ls -li bar
  10. 2228302 -rw-r--r-- 1 bozo bozo 4 2008-05-11 11:05 bar
  11. $ cat bar
  12. foo