前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux手误rm可能不需要跑路

linux手误rm可能不需要跑路

作者头像
入门笔记
发布2022-06-02 14:27:28
1920
发布2022-06-02 14:27:28
举报
文章被收录于专栏:入门小站

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

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

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

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

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

案例演示

创建一个文件
代码语言:javascript
复制
> vim  rumenz.txt
123
//保存退出
> cat rumenz.txt
123
tail -f打开rumenz.txt文件

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

代码语言:javascript
复制
> tail -f rumenz.txt
新开一个终端删除rumenz.txt
代码语言:javascript
复制
> rm -f rumenz.txt
找到占用rumenz.txt的进程
  • lsof查看删除的文件进程是否还存在。
  • 如没有安装请自行yum install lsof或者apt-get install lsof
代码语言:javascript
复制
> 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:进程操作的文件描述符目录
代码语言:javascript
复制
> 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

开始恢复文件

代码语言:javascript
复制
> cp 3 /root/test/rumenz.txt
> cat /root/test/rumenz.txt
123
能恢复的根本原因

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 入门小站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 误删文件还原可以分为两种情况
  • 今天只分析文件被删除后,相关进程还存在的情况
  • 案例演示
    • 创建一个文件
      • 用tail -f打开rumenz.txt文件
        • 新开一个终端删除rumenz.txt
          • 找到占用rumenz.txt的进程
            • 恢复文件
              • 能恢复的根本原因
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档