Linux系统下文件删除的恢复方法

对于rm,很多人都有惨痛的教训。我也遇到一次,一下午写的程序就被rm掉了,幸好只是一个文件,第二天很快又重新写了一遍。但是很多人可能就不像我这么幸运了。本文收集了一些在Linux下恢复rm删除的文件的方法,给大家作为参考。

  首先,最好的方法是避免这个问题,以下是几点建议:

  1、rm -rf误操作的后果是可怕的,rm -f也要三思而行,不能轻易使用。

  2、做好数据备份。

  3、用一些策略避免出错:

  提倡在shell下用 TAB 补全,用脚本执行任务,减少出错的机会。或者编写一个脚本,起名rm,在脚本里将真实的rm改为mv ,将删除的都mv到一个指定的目录里面,定期清理。

  那么rm删除的文件还能恢复吗?

  rm的man里面有如下说法:

  请注意,如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。如果想保证该文件的内容无法还原,请考虑使用 shred。

  所以理论上rm删除的文件是还能恢复的。删掉文件其实只是将指向数据块的索引点(information nodes)释放,只要不被覆盖,数据其实还在硬盘上,关键在于找出索引点,然后将其所指数据块内的数据抓出,再保存到另外的分区。在用rm误删除文件后,我们要做的第一件事就是保证不再向误删文件的分区写数据。

  通常我们可以有以下几种选择:

  1、借助工具。

  2、自己写程序。你需要会编程并了解对应的文件系统。

  3、如果数据很有用,也许可以找专业公司抢救。

  工具

  1、The Sleuth Kit http://www.sleuthkit.org/sleuthkit/(Autopsy是它的一个图形前端)

  2、Foremost    http://foremost.sourceforge.net

  3、一个全能的工具,Finaldata,可以恢复unix/linux/dos下误删的文件。对于unix,支持这些产品,     Solaris、AIX和HP-UX。对于linux,支持EXT2的文件系统。对于dos,支持FAT 12/16/32, NTFS 4/5/5.1 的文件系统。

  4、如果文件系统是ext2(对ext3无效):

  ext3的删除机制是直接把 inode data 删除了,所以造成 ext3 无法反删除(ext3设计为无法恢复被删除的文件)。

  unrm

  ext2ed

  debugfs(undel lsdel )

  recover

  Midnight Commander(mc)

  e2undel

  tct

  5、如果文件系统是FAT32或者NTFS:

  EasyRecovery

  Finaldata

  6、freebsd如果使用了rm,可以试一下undelete这个命令.

  7、当进程打开了某个文件时,只要该进程保持打开该文件,lsof可以用来恢复删除文件。

转自:http://www.linuxidc.com/Linux/2008-08/14744.htm

在linux下rm -rf 是一个很可怕的命令,因为下达这个命令意味着一旦删除的文件是无法挽回的,事实是如此吗?真的没有补救措施了吗?答案是委婉了,在一定的条件下可以补救,大家可能熟悉windows下删除的补救措施是通过相关的软件实现的,在linux下同样可以做到补救,但是有个大前提:就是不能有覆盖的动作(意思就是在尝试恢复删除的数据前,删除文件的目录内不能存放新东西),不然覆盖多少就损失多少!

这里用到的套件是ext3grep、系统必须默认的安装上e2fsprogs-lib、2fsprogs-devel、e2fsprogs5、gcc、gcc++这些软件
[[email protected] ~]# rpm -qa|grep e2fsprogs
e2fsprogs-libs-1.39-23.el5
e2fsprogs-devel-1.39-23.el5
e2fsprogs-1.39-23.el5

源码安装ext3grep
 [[email protected] ~]# llext3grep-0.10.2.tar.gz 
-rw-r--r-- 1 root root 236364 Oct 17 2011 ext3grep-0.10.2.tar.gz

[[email protected]~]# tar zxvf ext3grep-0.10.2.tar.gz
[[email protected] ~]# cd ext3grep-0.10.2
[[email protected] ext3grep-0.10.2]# ./configure 
[[email protected] ext3grep-0.10.2]# make && make install
[[email protected] ~]# ll /usr/local/bin
total 2656
-rwxr-xr-x 1 root root 2709704 Oct 15 04:46 ext3grep   //www.linuxidc.com这句是那个可执行文件

接下来演示一个补救的过程实例

[[email protected]~]# mkdir /data/ /ixdba/

[[email protected]]# dd if=/dev/zero of=data-disk bs=1M count=105
[[email protected] data]# mkfs.ext3 data-disk  //格式为ext3的文件系统,在出现的提示符处输入y
[[email protected] data]# mount -o loop /data/data-disk /ixdba/  //挂载
[[email protected] data]# cp /etc/host* /ixdba/ //往里边放文件
[[email protected] data]# cp /etc/passwd /ixdba/ 
[[email protected] data]# cd /ixdba/ 
[[email protected] data]# rm -rf *   //制造删除的动作
[[email protected] data]# cd /data/

[[email protected]]# ext3grep /data/data-disk --ls --inode 2  //查看丢失的文件

[[email protected]]# ext3grep /data/data-disk --restore-file passwd  //仅仅恢复passwd这个文件
[[email protected] data]# ext3grep /data/data-disk --restore-all    //恢复的动作,全部恢复

[[email protected]]# ls
data-disk  data-disk.ext3grep.stage1  data-disk.ext3grep.stage2  RESTORED_FILES
[[email protected] data]# ll RESTORED_FILES/      //所有恢复的文件全在这个文件夹里存放,都找回来了
total 48
-rw-r--r-- 1 root root   17 Oct 15 06:03host.conf
-rw-r--r-- 1 root root  187 Oct 15 06:03hosts
-rw-r--r-- 1 root root  161 Oct 15 06:03hosts.allow
-rw-r--r-- 1 root root  347 Oct 15 06:03hosts.deny
drwx------ 2 root root 4096 Oct 15 06:04 lost+found
-rw-r--r-- 1 root root 1635 Oct 15 06:03 passwd

总结:这里只能实现的是首次恢复的动作,并且不能有覆盖的动作。

注意:

1.      ext3grep后面跟的是分区名称,不是目录名

2.      --restore-file恢复指定文件,对路径名有特殊要求,具体请自己用—help查看

3.      所有恢复的文件放到该分区下的RESTORED_FILES目录,不是原目录

4.      关于所需的安装包,可以在系统光盘、SDK光盘上找。例如我就在suse11sp1的系统光盘和SDK光盘中找到所需的所有rpm包(不过ext3grep的源码包还是在网上下的)。实在不行也可以到网上去下载。

转自:http://blog.csdn.net/andy572633/article/details/8066363

时间: 2024-10-07 14:16:51

Linux系统下文件删除的恢复方法的相关文章

linux系统下文件查找

在我们实际应用中,经常需要查找某个特定的文件,或者根据文件的某个特定属性进行查找,今天小菜就给大家分享一下,linux系统下文件查找的两大利器: 1,locate:非实时查找(基于预先生成的数据库查找):模糊匹配:速度快 2,find:实时查找(遍历目录中的所有文件完成查找):精确匹配,支持众多查找标准:速度慢 一.locate 查询系统上预先生成的文件索引数据库:/var/lib/mlocate/mlocate.db 依赖于事先构建的索引:索引的构建是在系统较为空闲时自动进行(周期性任务) 管

Linux系统下自动删除前N天的日志文件

删除文件命令: find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \; 实例命令: find /opt/soft/log/ -mtime +30 -name "*.log" -exec rm -rf {} \; find /home/ -mtime +30 -name "*.log" -exec rm -rf {} \;  //删除home目录下包含子目录下所有30天前的日志文件 说明: 将/opt

linux系统下文件压缩与归档

不管是普通使用linux系统,还是做为一名运维人员,掌握文件的压缩与归档都是有必要的,在linux系统上压缩与归档的工具是比较多的,今天我就带大家了解一些比较常见的压缩与归档工具. 一.compress/uncompress  默认会删除原文件 compress [-dfvcVr] [-b maxbits] [file ...]  -d: 解压缩,相当于uncompress  -c: 结果输出至标准输出,不删除原文件  -v: 显示详情  uncompress 解压缩  zcat 不解压缩的前提

linux系统下文件命令详解

/etc 目录下包含的用户信息文件有: 3.1.0 passwd: 用户库文件 用户名 UID,GID 和工作目录都在此文件中 Shadow:存放用户口令的文件,每个用户的 口令加密后都放在此文件中 Group :主要存储用户组信息 Fstab: 系统开机启动自动挂载分区列表,需要设置开机自动挂载的分区都可以在此文件中加入. Inittab: 这个命令的配置文件,此文件是linux启动的重要文件,用来完成对整个系统的基本初始化配置 Hosts: 设定用户自己的ip与名字的对应表,类似window

u盘在linux系统下文件只读方式的解决方案

          我用的时ubuntu系统,经常使用u盘来传送文件,最近不知道为什么,u盘在window可以正常使用,但是到linux下文件就变成了只读方面了,没法进行复制,粘贴了.上网查找,发现方法比较简单,经过改变,变得更加实用的.所以记录下来.以供大家分享. 最好在root用户下执行如下命令: (1) 先执行此命令   tail -f /var/log/syslog (2) 再插上 u盘 (只读文件权限的u盘) (3)  fdisk -l 从上面可以看出U盘挂载的文件系统是  /dev/

关于linux系统下文件压缩归档操作命令略提

Linux下文件压缩归档操作命令:gzip/ungzip 后缀 .gz  xz/unxz       后缀 .xz  bzip2/bunzip2 后缀 .bz2  tar 用于归档并压缩  -# :#为0-9 指定压缩比 gzip -c name 压缩结果输出到标准输出  -d 解压缩  -v verbose  zcat 不解压的情况下查看压缩文件  -r 递归压缩 xz -k 保留原文件 xzcat 不解压的情况下查看原文件 tar Jcf FILE.tar.xz /DIR/TO/FILE 将

linux系统下文件夹以及文件的权限查看及修改;以及文件和文件夹删除 rm -rf 命令的使用

1.直接查看文件或者文件夹的权限命令: >>ll 或者 >>ls -l r代表读取权限,w写权限,x代表执行权限 第一个代表文件类型,-代表是普通文件,d代表是文件夹 权限一共分成3组,3个一组,分别是所有者,所属组,其他人 2.修改文件权限: 权限管理命令chmod,全拼:chang permissions mode of a file 语法:chmod [{ugoa}{+-=}{rwx}][文件或目录] [mode=421][文件或目录] -R 递归修改 u:所有者,g:所属组

Linux系统下快速删除某个目录下大量文件

不管是哪个操作系统,同一级目录存在太多的文件都是一件可怕的事情,不管是读取还是删除的时候. 一旦这种不幸的事情发生在你身上,而又不能完全把整个目录删掉怎么办呢? 你可以用 rm -f *.log 但是你马上就会收到一个出错信息:参数列表太长 一个小时以前我一直还是缩小通用匹配符的范围,例如我依次的执行 rm -f a*.log rm -f b*.log ...... 非常费劲,如果这样还不行可以还要继续细化通配符,这样要删除所有log文件可能需要一整天时间. 废话那么多,其实只需要一个命令就可以

Linux 系统下文件夹与文件的读写可执行权限问题

linux是一个多用户操作系统,linux对文件系统内的所有文件,实行了严格的权限划分管理.防止没有权限的用户访问某个文件.linux文件或目录的权限分为 读.写.可执行三种权限.文件访问的用户类别分为,文件创建者.与文件创建者同组的用户.其他用户三类.解释说明:drwxr-xr-x一:drwxr  创建者拥有的权限r-x   与拥有者同组的用户拥有的权限r-x     其他用户拥有的权限linux用他们的组合来表示文档或目录的权限!d rwx r-x r-x目录 属主权限 属组权限 其他权限对