linux手误rm后恢复文件

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

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

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

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

案例演示

创建一个文件

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

tail -f打开rumenz.txt文件

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

> tail -f rumenz.txt

新开一个终端删除rumenz.txt

> rm -f rumenz.txt

找到占用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:inotif

开始恢复文件

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

能恢复的根本原因

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

文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/9835

(1)
郭靖的头像郭靖
上一篇 2023年10月16日 下午10:28
下一篇 2023年10月18日 下午3:11

相关推荐

  • MySQL 如何使用离线模式维护服务器

    离线模式 作为 DBA,最常见的任务之一就是批量处理 MySQL 服务的启停或其他一些活动。在停止 MySQL 服务前,我们可能需要检查是否有活动连接;如果有,我们可能需要把它们全部杀死。通常,我们使用 pt-kill 杀死应用连接或使用 SELECT 语句查询准备杀死语句。例如: MySQL 有一个名为 offline_mode 的变量…

    2023年10月20日
    99900
  • Centos7安装postgresql数据库

    1.更新源 2.安装postgresql 3.初始化数据库 4.启动数据库并设置开机启动 5.登录postgresql并设置密码 postgresql在安装时默认添加用户postgres 输入 psql 进入数据库是这样的 设置密码: 退出按:q 备注其他:列出所有库l 列出所有用户du 列出库下所有表d 6.重启数据库: 7 创建数据库跟用户 因为post…

    2023年4月11日
    1.2K00
  • Linux服务器疑似被入侵,教你怎么去排查

    随着开源产品的越来越盛行,作为一个Linux运维工程师,能够清晰地鉴别异常机器是否已经被入侵了显得至关重要,个人结合自己的工作经历,整理了几种常见的机器被黑情况供参考。 背景信息:以下情况是在CentOS 6.9的系统中查看的,其它Linux发行版类似。 1、入侵者可能会删除机器的日志信息,可以查看日志信息是否还存在或者是否被清空,相关命令示例: [root…

    2023年2月23日
    1.2K00
  • Docker Dockerfile 使用方法

    Dockerfile 介绍当使用Docker构建容器化应用程序时,Dockerfile是一个用于定义容器镜像的文本文件。它包含了一系列指令,告诉Docker如何从基础镜像(通常是官方或自定义的操作系统镜像)构建出最终的镜像,以及如何配置容器中的环境、文件和应用程序。 Dockerfile 的编写是构建容器的基础,它允许您定义容器的构建步骤、环境和配置。通过合…

    2023年10月19日
    97500
  • Rocky Linux 9 配置静态ip

    almalinux9.x 放弃了 老的网络配置方式。 先备份默认配置文件 ens33.nmconnection 然后修改内容 重启网络 远程修改一定要成对出现 否则网络起不来 查看ip 重新加载网卡

    2023年4月4日
    1.1K00

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

在线咨询: QQ交谈

邮件:712342017@qq.com

工作时间:周一至周五,8:30-17:30,节假日休息

关注微信