sanduzxcvbnm

文章转载自:https://www.jianshu.com/p/662293f12a47

linux不像windows有个回收站,使用rm -rf *基本上文件是找不回来的。

那么问题来了:
对于linux下误删的文件,我们是否真的无法通过软件进行恢复呢?

答案当然是否定的,对于误删的文件,我们还是能通过软件恢复过来的。对于误删文件还原可以分为两种情况:

一种是删除以后在进程存在删除信息
一种是删除以后进程都找不到,只有借助于工具还原。

接下来以例子分别解说下两种不同的误删还原方式:

误删除文件进程还在的情况:
这种一般是有活动的进程存在持续标准输入或输出,到时文件被删除后,进程PID依旧存在。这也是有些服务器删除一些文件但是磁盘不释放的原因。

打开一个终端对一个测试文件做cat追加操作:

[root@docking ~]# echo "This is DeleteFile test." > deletefile.txt
[root@docking ~]# ls
deletefile.txt
[root@docking ~]# cat >> deletefile.txt 
Add SomeLine into deletefile for fun.

打开另外一个终端查看这个文件可以清楚看到内容:
[root@docking ~]# ls
deletefile.txt
[root@docking ~]# cat deletefile.txt
This is DeleteFile test.
Add SomeLine into deletefile for fun.

此时,删除文件rm -f deletefile.txt
[root@docking ~]# rm -f deletefile.txt
[root@docking ~]# ls
命令查看这个目录,文件已经不存在了,那么现在我们将其恢复出来。

lsof查看删除的文件进程是否还存在。
如没有安装请自行yum install lsof或者apt-get install lsof
1.类似这种情况,我们可以先lsof查看删除的文件 是否还在

[root@docking ~]# lsof | grep deletefile
cat 21796 root 1w REG 253,1 63 138860 /root/deletefile.txt (deleted)

2.恢复cp /proc/pid/fd/1 /指定目录/文件名
进入 进程目录,一般是进入/proc/pid/fd/,针对当前情况:

[root@docking ~]# cd /proc/21796/fd
[root@docking fd]# ll
总用量 0
lrwx------ 1 root root 64 1月 18 22:21 0 -> /dev/pts/0
l-wx------ 1 root root 64 1月 18 22:21 1 -> /root/deletefile.txt (deleted)
lrwx------ 1 root root 64 1月 18 22:21 2 -> /dev/pts/0

恢复操作:
[root@docking fd]# cp 1 ~/deletefile.txt.backup
[root@docking fd]# cat ~/deletefile.txt.backup
This is DeleteFile test.
Add SomeLine into deletefile for fun.

3.恢复完成

误删除的文件进程已经不存在,借助于工具还原
准备一些文件目录

准备一份挂载的盘

mkdir backuptest
cd backuptest
mkdir deletetest
mkdir deletetest/innerfolder
echo "Delete a folder test." > deletetest/innerfolder/deletefile.txt

echo "tcpdump❌172:72:

分类:

技术点:

相关文章:

  • 2021-11-27
  • 2021-12-22
  • 2021-11-27
  • 2021-12-22
  • 2021-12-31
  • 2021-11-27
  • 2021-12-22
  • 2021-10-24
猜你喜欢
  • 2021-12-22
  • 2021-12-22
  • 2021-11-27
  • 2021-12-22
相关资源
相似解决方案