恢复删除的文件
当Linux计算机受到***时,常见的情况是日志文件被删除,以掩盖***者的踪迹。管理错误也可能导致意外删除重要的文件,比如在清理旧日志时,意外地删除了数据库的活动事务日志。有时可以通过lsof来恢复这些文件。
当进程打开了某个文件时,只要该进程保持打开该文件,即使将其删除,它依然存在于磁盘中。这意味着,进程并不知道文件已经被删除,它仍然可以向打开该文件时提供给它的文件描述符进行读取和写入。除了该进程之外,这个文件是不可见的,因为已经删除了其相应的目录索引节点。
在/proc 目录下,其中包含了反映内核和进程树的各种文件。/proc目录挂载的是在内存中所映射的一块区域,所以这些文件和目录并不存在于磁盘中,因此当我们对这些文件进行读取和写入时,实际上是在从内存中获取相关信息。大多数与lsof 相关的信息都存储于以进程的PID 命名的目录中,即/proc/1234 中包含的是PID 为1234 的进程的信息。每个进程目录中存在着各种文件,它们可以使得应用程序简单地了解进程的内存空间、文件描述符列表、指向磁盘上的文件的符号链接和其他系统信息。lsof 程序使用该信息和其他关于内核内部状态的信息来产生其输出。所以lsof 可以显示进程的文件描述符和相关的文件名等信息。也就是我们通过访问进程的文件描述符可以找到该文件的相关信息。
 
当系统中的某个文件被意外地删除了,只要这个时候系统中还有进程正在访问该文件,那么我们就可以通过lsof从/proc目录下恢复该文件的内容。 假如由于误操作将/var/log/messages文件删除掉了,那么这时要将/var/log/messages文件恢复的方法如下:
首先使用lsof来查看当前是否有进程打开/var/logmessages文件,如下:
[root@station90 yum.repos.d]# lsof | grep /var/log/messages
syslogd   2699      root    1w      REG                8,2   480817     330592 /var/log/messages (deleted)
从上面的信息可以看到PID 2699(syslogd)打开文件的文件描述符为 1。同时还可以看到/var/log/messages已经标记被删除了。因此我们可以在/proc/2699/fd/1 (fd下的每个以数字命名的文件表示进程对应的文件描述符)中查看相应的信息,如下:
[root@station90 fd]# pwd
/proc/2699/fd
[root@station90 fd]# cat 1 | head -n 5
Jan 13 08:59:02 station90 syslogd 1.4.1: restart.
Jan 13 10:44:22 station90 syslogd 1.4.1: restart.
Jan 13 10:44:22 station90 kernel: klogd 1.4.1, log source = /proc/kmsg started.
Jan 13 10:44:22 station90 kernel: Linux version 2.6.18-164.el5 (mockbuild@x86-003.build.bos.redhat.com) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)) #1 SMP Tue Aug 18 15:51:48 EDT 2009
Jan 13 10:44:22 station90 kernel: Command line: ro root=LABEL=/ rhgb quiet从上面的信息可以看出,查看/proc/2699/fd/1 就可以得到所要恢复的数据。如果可以通过文件描述符查看相应的数据,那么就可以使用 I/O 重定向将其复制到文件中,如:
cat /proc/2699/fd/1 > /var/log/messages
在恢复之前,及时touch了/var/log/messages文件也是没有问题的
对于许多应用程序,尤其是日志文件和数据库,这种恢复删除文件的方法非常有用。
文章来自:
http://blog.csdn.net/guoguo1980/article/details/2324454
 
51cto博文索引,共同进步
http://lhf507.blog.51cto.com/5489375/1112400

转载于:https://blog.51cto.com/donex/1127127

linux 文件删除恢复相关推荐

  1. linux文件删除恢复

    1.  Linux运维人员学会备份至关重要 删除文件恢复 第一种情况: 当前系统有多个用户,其中一个用户对文件进行修改,则另一个用户对文件进行了删除操作,那么,这时候如何进行操作? 解决方法: 通过文 ...

  2. linux文件回收站恢复,Linux之恢复误删的文件[针对丢弃到回收站]

    linux下恢复误删除的文件方法(ext2及ext3) linux下恢复误删除的文件方法(ext2及ext3) 2009-12-19 15:23:47 分类: LINUX 如果是ext2文件系统的,直 ...

  3. linux文件删除指定内容,Linux bash删除文件中含“指定内容”的行功能示例

    本文实例讲述了Linux bash删除文件中含"指定内容"的行功能.分享给大家供大家参考,具体如下: #!/bin/sh # 功能: 删除文件中含"指定内容"的 ...

  4. linux文件删除机制,Linux 文件删除机制

    Linux 是通过 link 的数量来控制文件删除,只有当一个文件不存在任何 link 的时候,这个文件才会被删除.每个文件都有 2 个 link 计数器-- i_count 和 i_nlink.i_ ...

  5. Linux文件删除原理

    Linux是通过link的数量来控制文件删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除.一般来说,每个文件都有2个link计数器:i_count 和 i_nlink. i_coun ...

  6. Linux文件删除但空间不释放问题篇

    通常报磁盘不足的错误,有两个原因: •磁盘空间满:可以通过df -h命令查看磁盘的使用情况. •磁盘inode资源占用完:可以通过df -i命令查看,确认inode节点使用率: 如果是inode资源占 ...

  7. linux压缩文件恢复,Linux文件误删恢复

    实验要求: 对新建磁盘sdb1中删除的文件进行恢复 实验步骤: 一.安装环境包 rpm -ivh /mnt/Packages/e2fsprogs-libs-1.41.12-18.el6.x86_64. ...

  8. ORACLE实例控制文件删除恢复,Oracle案例:损坏控制文件的恢复方法

    一: 损坏单个控制文件 损坏单个控制文件是比较容易恢复的,因为一般的数据库系统,控制文件都不是一个,而且所有的控制文件都互为镜相,只要拷贝一个好的控制文件替换坏的控制文件就可以了. 1.控制文件损坏, ...

  9. u盘文件删除恢复,数据恢复软件真的好用吗

    u盘是被我们广泛使用的一种数据存储设备,但在日常使用过程中很容易发生误删除.误格式化或者u盘损坏等状况,这时候就面临u盘文件恢复的问题,其实以现在的数据恢复能力,u盘文件是可以恢复的. u盘文件删除后 ...

最新文章

  1. MiguelCatalan/MaterialSearchView
  2. C#中实现文件重命名的方式
  3. 浅析ios开发中Block块语法的妙用
  4. opengl加载显示3D模型X类型文件
  5. ubuntu按方向键出现abcd_Ubuntu Vi方向键[A [B [C [D问题解决
  6. Android工具箱之文件目录
  7. 语义分割Swin Transformer
  8. 关于降低软件开发过程中沟通成本的思考
  9. 170816 Ubuntu-Nvidia CUDA+Driver+cuDNN installation-Titan Xp
  10. excel表格横向纵向变换_Excel新手最容易给自己挖的几个坑,手把手教你完美避雷!...
  11. ssm+springboot校园外卖订餐配送系统javaweb
  12. 数学公式div是什么意思
  13. python爬虫 破解js加密有道词典案列的两种方式以及思路总结
  14. Apache安全配置
  15. Caching best practices max-age
  16. omi html转义,特殊字符读法
  17. 如何查区块链项目的服务器地址,怎么查区块链服务器地址
  18. 六款好用的视频编辑软件推荐
  19. 节日献礼:Flutter图片库重磅开源!
  20. 短视频剪辑,超简单的教程

热门文章

  1. Sublime插件支持Sass编译和Babel解析ES6 .sublime-build文件初探
  2. opencv 一堆算法,图像处理等
  3. js立即执行函数: (function ( ){...})( ) 与 (function ( ){...}( ))
  4. qt qml scrollbar 移动APP风格的滚动轴
  5. Ubuntu安装Chrome最新版
  6. WINDOWS与LINUX下的DNS轮询配置
  7. python 操作pdf
  8. Pyhton 模块和包
  9. 多线程中的应用之队列(queue)
  10. matplotlib 的几种柱状图