对于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文章
11373浏览量
211289 -
服务器
+关注
关注
12文章
9425浏览量
86490 -
软件
+关注
关注
69文章
5063浏览量
88443 -
磁盘
+关注
关注
1文章
382浏览量
25365 -
文件
+关注
关注
1文章
573浏览量
24927
原文标题:Linux手误rm可能不需要跑路
文章出处:【微信号:良许Linux,微信公众号:良许Linux】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
Linux文件系统被误删档怎么恢复?
误删除文件恢复工具FinalData_3.0.8.1201_XiaZaiBa
多线程的并行实例恢复方法

苹果手机照片误删该如何恢复
安卓手机图片误删恢复方法

服务器数据恢复-LINUX下误删除/格式化的数据恢复方案
小米电脑数据恢复的常用方法、工具和步骤
Oracle数据恢复—Oracle删除数据不用怕!这些数据恢复方法了解一下
服务器数据恢复—EXT3文件系统下误删除数据的恢复案例

评论