linux手误rm可能不需要跑路

网友投稿 971 2022-05-29

对于linux下误删的文件,我们是否真的无法通过软件进行恢复呢?

误删文件还原可以分为两种情况

一种是删除以后在进程存在删除信息

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

今天只分析文件被删除后,相关进程还存在的情况

linux手误rm可能不需要跑路

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

案例演示

> vim rumenz.txt 123 //保存退出 > cat rumenz.txt 123

目的是让rumenz.txt被删除后,进程依然存在

> tail -f rumenz.txt

> rm -f rumenz.txt

lsof查看删除的文件进程是否还存在。

如没有安装请自行yum install lsof或者apt-get install lsof

> lsof | grep delete | grep rumenz tail 10222 root 3r REG 253,1 4 70911074 /root/test/rumenz.txt (deleted)

进程ID是10222,从上面可以看出,当前文件状态为已删除(deleted)

/proc/10222/fd:进程操作的文件描述符目录

> cd /proc/10222/fd > ls -al dr-x------ 2 root root 0 May 11 21:41 . dr-xr-xr-x 9 root root 0 May 11 21:41 .. lrwx------ 1 root root 64 May 11 21:41 0 -> /dev/pts/1 lrwx------ 1 root root 64 May 11 21:41 1 -> /dev/pts/1 lrwx------ 1 root root 64 May 11 21:41 2 -> /dev/pts/1 lr-x------ 1 root root 64 May 11 21:41 3 -> /root/test/rumenz.txt (deleted) lr-x------ 1 root root 64 May 11 21:41 4 -> anon_inode:inotify

开始恢复文件

> cp 3 /root/test/rumenz.txt > cat /root/test/rumenz.txt 123

当程序运行时,操作系统会专门开辟一块内存区域,提供给当前进程使用,对于依赖的文件,操作系统会发放一个文件描述符,以便读写文件,当我们执行rm -f删除文件时,其实只是删除了文件的目录索引节点,对于文件系统不可见,但是对于打开它的进程依然可见,即仍然可以使用先前发放的文件描述符读写文件,正是利用这样的原理,所以我们可以使用I/O重定向的方式来恢复文件。

Linux

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【华为云.云驻计划】博主激励计划9月金秋继续开启!发表5篇原创文章即可参与激励
下一篇:linux 7 multipath多路径软件部署
相关文章