佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1789|回复: 1

linux recover delete file-by大家学分享站

[复制链接]
发表于 16-12-2015 12:19 PM | 显示全部楼层 |阅读模式

linux下如何恢复被误删文件呢?

linux recover delete file

一、文件删除原理:

1) linux是通过link的数量来控制文件删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除。一般来说,每个文件都有2个link计数器:i_count和i_nlink。
2)当进程打开某个文件时,只要该进程保持打开该文件,即使将其删除,它依然存在于磁盘中。这意味着,进程并不知道文件已经被删除,它仍然可以向打开该文件时提供给它的文件描述符进行读取和写入。除了该进程之外,这个文件是不可见的,因为已经删除了其相应的目录索引节点。

3) 你需要做的事情。
当你发现你误删除了文件后,要做的第一件事是马上卸载被误删除文件所在的分区,或者以只读的方式来挂载该分区。原因大家都很清楚,文件被删除后,文件中的数据还存在磁盘上,除非存放这些数据的数据块又被操作系统分配出去了。我们这一步就是尽量降低数据块中数据被覆盖的风险,以提高恢复数据成功的比率。

二、文件删除原理:

第一种方法

Code   ViewPrint

  • 1)现在我向大家介绍使用extundelete恢复文件(适合rhel6.X系统的ext4)
  • #上传extundelete-0.2.4.tar.bz2包传到/usr/local/src下
  • #tar -jxvf  extundelete-0.2.4.tar.bz2
  • # cd extundelete-0.2.4
  • #./configure (这步出现错误,请看下文)
  • #mount /dev/cdrom /mnt
  • #rpm -ivh  /mnt/Packages/e2fsprogs-devel-1.41.12-18.el6.x86_64.rpm
  • (必须安装否则,前面./configure报错)
  • #./configure (成功)
  • make && make install
  • 软件安装完毕,下面我们来恢复文件吧
  • 1)我先创建一个恢复目录
  • mkdir recover
  • cd recover
  • extundelete  /dev/sda4 --inode  2  (看到你所删除的文件)
  • #extundelete  /dev/sda4 -restore-inode 15 (按对应的节点来恢复文件)
  • #extundelete  /dev/sda4 -restore-file  a.txt   (按对应文件名来恢复文件)
  • #extundelete  /dev/sda4 -restore-dirctory etc  (按对应的目录,这里我以etc目录)
  • ##extundelete  /dev/sda4 -restore-all (全部恢复)



第二种方法:
使用lsof自带一个的神秘功能
原理:大多数与 lsof 相关的信息都存储于以进程的 PID 命名的目录中
假如由于误操作将/var/log/messages文件删除掉了,那么这时要将/var/log/messages文件恢复的方法
如下:
首先使用lsof来查看当前是否有进程打开/var/logmessages文件,如下:

Code   ViewPrint

  • # lsof |grep /var/log/messages
  • syslogd 1283 root 2w REG 3,3 5381017 1773647 /var/log/messages (deleted)
  • 从 上面的信息可以看到 PID 1283(syslogd)打开文件的文件描述符为 2。同时还可以看到/var/log
  • /messages已经标记被删除了。因此我们可以在 /proc/1283/fd/2 (fd下的每个以数字命名的文件表示
  • 进程对应的文件描述符)中查看相应的信息,如下:
  • # head -n 10 /proc/1283/fd/2
  • Aug 4 13:50:15 holmes86 syslogd 1.4.1: restart.
  • Aug 4 13:50:15 holmes86 kernel: klogd 1.4.1, log source = /proc/kmsg started.
  • Aug 4 13:50:15 holmes86 kernel: Linux version 2.6.22.1-8 (root@everestbuilder.linux-ren.org)
  • (gcc version 4.2.0) #1 SMP Wed Jul 18 11:18:32 EDT 2007 Aug 4 13:50:15 holmes86 kernel:
  • BIOS-provided physical RAM map: Aug 4 13:50:15 holmes86 kernel: BIOS-e820:
  • 0000000000000000 - 000000000009f000 (usable) Aug 4 13:50:15 holmes86 kernel: BIOS-e820:
  • 000000000009f000 - 00000000000a0000 (reserved) Aug 4 13:50:15 holmes86 kernel:
  • BIOS-e820: 0000000000100000 - 000000001f7d3800 (usable) Aug 4 13:50:15 holmes86 kernel:
  • BIOS-e820: 000000001f7d3800 - 0000000020000000 (reserved) Aug 4 13:50:15 holmes86
  • kernel: BIOS-e820: 00000000e0000000 - 00000000f0007000 (reserved) Aug 4 13:50:15
  • holmes86 kernel: BIOS-e820: 00000000f0008000 - 00000000f000c000 (reserved)



从上面的信息可以看出,查看 /proc/8663/fd/15 就可以得到所要恢复的数据。如果可以通过文件描述
符查看相应的数据,那么就可以使用 I/O 重定向将其复制到文件中,如:

Code   ViewPrint

  • cat /proc/1283/fd/2 > /var/log/messages

对于许多应用程序,尤其是日志文件和数据库,这种恢复删除文件的方法非常有用。

方案三,使用ext3grep恢复文件(适合rhel5.X系统的ext3)
上传ext3grep-0.10.1.tar.gz包传到/usr/local/src下

Code   ViewPrint

  • #tar -jxvf  ext3grep-0.10.1.tar.gz
  • # cd ext3grep-0.10.1
  • #./configure (成功)
  • make && make install


软件安装完毕,下面我们来恢复文件吧
1)我先创建一个恢复目录

  • mkdir recover
  • cd recover
  • ext3grep /dev/your-device --restore-filepath/to/your/file/filename

提示:
上面的文件路径,是在该分区上文件路径。假设我们要恢复/dev/sda3分区上文件,这个分区原来的安装点是/home,现在想恢复文件/home/easwy/vi/tips.xml,那么输入的命令应该是:

  • ext3grep /dev/sda3--restore-file easwy/vi/tips.xml

所有恢复的文件都会放在当前目下在RESTORED_FILES目录下,大小也一样,这里RESTORED_FILES目录是执行ext3grep的当前目录下
如果你忘记了文件名,或者你误删除的是一个目录而你无法记全该目录中的文件,你可以先用下面的命令查询一下文件名:

  • ext3grep /dev/sda3 --dump-names | tee filename.txt

上面的命令把ext3grep命令的输出记录到文件filename.txt中,你可以慢慢查看,或者使用grep命令过滤出你需要的信息。

当你知道了目录/文件的信息后,就可以用上面说的命令进行恢复了。

复所有文件和目录,但是目录的话,如果删除时间较长,不一定能完全恢复,压缩文件一般都能恢复

Code   ViewPrint

  • xt3grep /termite/cc-disk --restore-all
  • ext3grep /dev/sda3  --ls --inode 2 创建扫描分区文件:sda5.ext3grep.stage1和sda5.ext3grep.stage2


如果想要重新生成可以删除这个两个文件,再次执行这条命令。另外当第一次执行ext3grep /dev/sda3 --restore-file test/a.txt进行还原时也会自动生成扫描分区文件。


via:lwxshow
回复

使用道具 举报


ADVERTISEMENT

发表于 20-4-2016 11:06 AM | 显示全部楼层
谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 27-4-2024 08:02 AM , Processed in 0.060503 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表