对于linux下误删的文件,我们是否真的无法通过软件进行恢复呢?
误删文件还原可以分为两种情况
一种是删除以后在进程存在删除信息
一种是删除以后进程都找不到,只有借助于工具还原。
今天只分析文件被删除后,相关进程还存在的情况
这种一般是有活动的进程存在持续标准输入或输出,到时文件被删除后,进程PID依旧存在。这也是有些服务器删除一些文件但是磁盘不释放的原因
案例演示
创建一个文件
>vimrumenz.txt 123 //保存退出 >catrumenz.txt 123
用tail -f打开rumenz.txt文件
目的是让rumenz.txt被删除后,进程依然存在
>tail-frumenz.txt
新开一个终端删除rumenz.txt
>rm-frumenz.txt
找到占用rumenz.txt的进程
lsof查看删除的文件进程是否还存在。
如没有安装请自行yum install lsof或者apt-get install lsof
>lsof|grepdelete|greprumenz tail10222root3rREG253,1470911074/root/test/rumenz.txt(deleted)
进程ID是10222,从上面可以看出,当前文件状态为已删除(deleted)
恢复文件
/proc/10222/fd:进程操作的文件描述符目录
>cd/proc/10222/fd >ls-al dr-x------2rootroot0May1121:41. dr-xr-xr-x9rootroot0May1121:41.. lrwx------1rootroot64May1121:410->/dev/pts/1 lrwx------1rootroot64May1121:411->/dev/pts/1 lrwx------1rootroot64May1121:412->/dev/pts/1 lr-x------1rootroot64May1121:413->/root/test/rumenz.txt(deleted) lr-x------1rootroot64May1121:414->anon_inode:inotify
开始恢复文件
>cp3/root/test/rumenz.txt >cat/root/test/rumenz.txt 123
能恢复的根本原因
当程序运行时,操作系统会专门开辟一块内存区域,提供给当前进程使用,对于依赖的文件,操作系统会发放一个文件描述符,以便读写文件,当我们执行rm -f删除文件时,其实只是删除了文件的目录索引节点,对于文件系统不可见,但是对于打开它的进程依然可见,即仍然可以使用先前发放的文件描述符读写文件,正是利用这样的原理,所以我们可以使用I/O重定向的方式来恢复文件。
审核编辑:汤梓红
-
Linux
+关注
关注
87文章
10990浏览量
206734 -
服务器
+关注
关注
12文章
8116浏览量
82509 -
软件
+关注
关注
67文章
4348浏览量
85621 -
磁盘
+关注
关注
1文章
338浏览量
24882 -
文件
+关注
关注
1文章
540浏览量
24402
原文标题:Linux手误rm可能不需要跑路
文章出处:【微信号:良许Linux,微信公众号:良许Linux】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论