Linux下利用Lsof恢复误删文件的方法

   原理:在Linux系统的/proc 分区下保存着进程的目录和名字,包含fd(文件描述符)和其下的子目录(进程打开文件的链接),那么如果删除了一个文件,还存在一个 inode的引用:/proc/进程号/fd/文件描述符。我们只要知道当前打开文件的进程pid和文件描述符fd就能利用lsof工具列出进程打开的文件。

  一、将 ls 的手册过滤掉主要控制符后重定向到文件ls.txt 中,并用more查看,CTRL + Z 暂停查看操作

  1: [root@localhost script]# man ls |col -b > ls.txt

  2: [root@localhost script]# more ls.txt

  3: LS(1) User Commands LS(1)

  4:

  1: [1]+ Stopped more ls.txt

  2: [root@localhost script]#

  3: [root@localhost script]# jobs

  4: [1]+ Stopped more ls.txt

  5:

  二、假设误删文件 ls.txt

  1: [root@localhost script]# rm ls.txt

  2: rm:是否删除 一般文件 “ls.txt”? y

  三、利用lsof找到进程6511、并拷贝恢复,只能在这个文件被使用或调用的情况下有效

  3: [root@localhost script]# lsof |grep ls.txt

  4: more 6511 root 3r REG 253,0 7300 1083699 /opt/script/ls.txt (deleted)

  5:

  1: [root@localhost script]# ls -l /proc/6511/fd/

  2: 0 1 2 3

  3: [root@localhost script]# ls -l /proc/6511/fd/3

  4: lr-x------ 1 root root 64 10-30 21:21 /proc/6511/fd/3 -> /opt/script/ls.txt (deleted)

  5:

  1: cp /proc/6511/fd/3 ls.txt.saved

时间: 2024-10-31 22:28:21

Linux下利用Lsof恢复误删文件的方法的相关文章

Linux下利用inode删除指定文件

本文主要介绍使用inode删除异常文件名的文件的方法,供大家参考: 在Linux中,有时候会遇到文件名是乱码或者是某些特殊中文的文件,这时候通过文件名就很难删除. 同时,对于linux中的任何一个文件都必然有其唯一的inode值,这时候就可以通过inode来删除异常文件名的文件. 操作的对象一般为类似下面的文件: [root@server tmp]# ll    总用量 61404-rw-r--r-- 1 root root 0 6月 16 14:58 ?    -rw-r--r-- 1 roo

Linux下两种删除过期文件的方法详述

一.概述 在实际的C软件开发项目中,不同的软件会在不同的目录中生成文件,由于磁盘的存储空间有限,开发人员不得不考虑对目录下的过期文件进行删除.一般说来,有两种删除过期文件的方法,一种是在C程序中实现,一种是利用crontab实现.本文对这两种方法的具体实现进行详细的介绍. 为了便于说明,本文中的过期文件的后缀为.c,存放在/home/zhou/zhouzx/Test目录下,过期时间为1天. 二.在C程序中实现过期文件删除 在该方法中,我们要考虑的主要问题为: (1)要删除过期多久的文件?文件存放

Win8系统下恢复误删文件文件的操作方法

  我们在使用电脑时,很多情况下在文件删除后才发现被删除的文件还有用处,删除后才后悔莫及,本文介绍在win8系统下,借助Recuva恢复工具对误删的文件进行恢复. 操作方法 1.首先安装Recuva,选择默认的简体中文语言.安装完成后打开Recuva,进入Recuva向导,根据向导提示进行恢复误删除文件: 2.使用Recuva向导,操作非常简单.如果你已经熟悉了相关的操作,不想再使用Recuva向导,可以勾选"启动时不显示此向导",这样在启动时就会直接进入高级功能模式; 3.在Piri

myeclipse中恢复误删文件和代码

myeclipse中恢复误删文件和代码 [ 恢复误删文件 ] 今天在写代码的时候,不小心把一个包给删除了,然后这个包下所有的文件都没了,相信很多人都有类似的经历, 幸好myeclipse给我们提供了一个很好用的功能: 选中项目 -> Restore from Local History.. -> 界面如下图 勾选要恢复的文件,点击Restore就可以了,就算你把myeclipse关闭了也没关系,非常的方便. [ 恢复误删代码 ] 对于误删的代码,如果没有关闭myeclipse,我们可以按ctr

360安全卫士如何恢复误删文件

  360安全卫士恢复误删文件教程 一.工具法 利用360安全卫士中的360系统急救箱进行恢复文件,可以恢复误删而导致系统出错的问题.它分为以下四种修复模式: 1.系统设置修复区; 2.网络修复区; 3.系统修复区; 4.MBR修复区; 二.系统法 采取开机按住F8或还原系统恢复系统文件两种模式: 1.开机按住F8,选择恢复到最后一次起作用的配置,以恢复到最近系统配置完全的时间点; 2.开机选择还原备份,选择恢复备份到备份文件的时候,也就是误删文件之前的时间点,也是一种很好的恢复方式; 三.软件

嵌入式 linux下利用backtrace追踪函数调用堆栈以及定位段错误

    嵌入式 linux下利用backtrace追踪函数调用堆栈以及定位段错误 2015-05-27 14:19 184人阅读 评论(0) 收藏 举报  分类:   嵌入式(928)  一般察看函数运行时堆栈的方法是使用GDB(bt命令)之类的外部调试器,但是,有些时候为了分析程序的BUG,(主要针对长时间运行程序的分析),在程序出错时打印出函数的调用堆栈是非常有用的. 在glibc头文件"execinfo.h"中声明了三个函数用于获取当前线程的函数调用堆栈.   [cpp] vie

Linux下编写Lua扩展so文件和调用方法实例

  这篇文章主要介绍了Linux下编写Lua扩展so文件和调用方法实例,本文给出C语言代码.编译SO文件.Lua中调用代码实例,需要的朋友可以参考下 代码如下: #include #include #include #include #include #include #include #include #include #include #include "lua.h" #include "lualib.h" #include "lauxlib.h&qu

linux下svn提交忽略某些文件、目录(ignore属性

 svn也是一个目录同步了我们可以用它来做版本控制了,下面一起来看看关于linux下svn提交忽略某些文件.目录(ignore属性),希望例子对各位有帮助.     在项目中,有些文件是不需要将本地的提交到svn仓库,例如config.php文件,特别是定义了绝对路径的,或者是缓存目录.图片目录等,所以为了方便,在每次提交svn的时候,都需要忽略这些文件.目录,避免不慎提交引起团队中其他成员需要修改其本地的版本. linux下用svn propedit svn:ignore命令可以编辑忽略文件.

Win7系统如何恢复误删文件

  win7还原系统对于使用电脑的人来说都不陌生,它能帮助我们还原系统,达到win7误删文件恢复的效果.下面系统天堂小编教您Win7系统如何恢复误删文件. win7误删文件恢复的前提是必须要有一个还原点,首先小编教您如何设置win7系统文件恢复还原点. 1.在"计算机"图标上右键单击,在弹出的菜单上选择"属性". 2.弹出"系统属性",选择"系统保护"标签. 3.在"系统保护"里,可以根据需要选择"