rm -rf * extundelete,foremost恢复文件,修改rm命令.

Linux 专栏收录该内容
58 篇文章 3 订阅

摘要: 这个命令让我体会到了什么叫做一不小心就一无所有.   

        文件恢复的原理:首先简单介绍一下Linux文件系统的最基本单元:inode。inode译成中文就是索引节点,每个存储设备(例如硬盘)或存储设备的分区被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是block,block是用来存储数据用的。而inode呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode为每个文件进行信息索引,所以就有了inode的数值。在ext3和ext4文件系统中,每个文件都是通过inode来描述其数据存放的具体位置,当文件被删除以后,inode的数据指针部分被清零,文件目录区没有太多变化。文件的读写都是通过inode来实现,当inode数据指针被清零以后,即便文件内容还在,也没有办法把文件内容组合出来。当ext3和ext4文件系统中的元数据metadata发生变化时,相应的元数据metadata在日志文件会有一份拷贝。比如一个文件被删除了,它的inode信息会在日志文件中先保存一份,然后把要删除文件inode相关信息清零。这个日志文件是循环使用的,当操作过多时,删除的文件的inode日志记录会被新的数据替换,这就彻底丧失了根据inode找回数据的机会了。如果是大量文件的删除,这个日志文件会被反复循环利用多次,只留给最后删除的那些文件的恢复机会。


1. 首先查看删除文件所在的挂载目录:

# df -T

     博主的挂载分区为 /dev/sdb5 ,格式为ext4格式.


2.然后迅速挂载分区,或者将分区设置为只读模式(因为避免系统在相同位置重新储存信息,否则谁也无力回天.)

umount /dev/sdb5      卸载分区(如果系统有多个个分区的话,建议卸载)  所以推荐用户安装系统时,分配多个分区.
or
mount -o remount,ro /dev/sdb5 -f (-f 强制)  只读分区(恢复点和系统在一个分区)

    如果出现:

root@me# mount -r -n -o remount /dev/sdb5
mount: / is busy

     查看/dev/sdb5  分区占用情况.(所以将分区改为只读)

root@me# fuser -v -m /dev/sdb5
                     USER        PID ACCESS COMMAND
/dev/sdb5:           root     kernel mount /
                     root          1 .rce. systemd
                     root          2 .rc.. kthreadd
                     root          3 .rc.. ksoftirqd/0
                     root          5 .rc.. kworker/0:0H
                     root          7 .rc.. rcu_preempt
                     root          8 .rc.. rcu_sched
                     root          9 .rc.. rcu_bh
                     root         10 .rc.. migration/0
                     root         11 .rc.. lru-add-drain
   

3.下载安装恢复软件,extundelete,或者 foremost.

4.使用extundelete恢复;

yum install e2fsprogs e2fsprogs-devel
or
sudo apt-get install e2fsprogs e2fsprogs-dev
yum install extundelete
or
sudo apt-get install extundelete

5.extundelete 命令介绍:

# extundelete --help

其中,参数(options)有:

--version, -[vV],显示软件版本号。

--help,显示软件帮助信息。

--superblock,显示超级块信息。

--journal,显示日志信息。

--after dtime,时间参数,表示在某段时间之后被删的文件或目录。

--before dtime,时间参数,表示在某段时间之前被删的文件或目录。

动作(action)有:

--inode ino,显示节点“ino”的信息。

--block blk,显示数据块“blk”的信息。

--restore-inode ino[,ino,...],恢复命令参数,表示恢复节点“ino”的文件,恢复的文件会自动放在当前目录下的RESTORED_FILES文件夹中,使用节点编号作为扩展名。

--restore-file 'path',恢复命令参数,表示将恢复指定路径的文件,并把恢复的文件放在当前目录下的RECOVERED_FILES目录中。

--restore-files 'path',恢复命令参数,表示将恢复在路径中已列出的所有文件。

--restore-all,恢复命令参数,表示将尝试恢复所有目录和文件。

-j journal,表示从已经命名的文件中读取扩展日志。

-b blocknumber,表示使用之前备份的超级块来打开文件系统,一般用于查看现有超级块是不是当前所要的文件。

-B blocksize,通过指定数据块大小来打开文件系统,一般用于查看已经知道大小的文件。

注意:extundelete 恢复到当前目录下的 RECOVERED_FILES 文件夹下,禁止恢复到本分区目录下,因为有可能重写导致覆盖掉你要恢复的文件.  如果仅有一个分区,建议卸载后硬盘找一个其他机器恢复.

7. 查抄分区的目录删除状况. 2 代表从根目录开始查找.

extundetele --inode 2 /dev/sdb5

8.查找目录的innode编号

 ls -i    //获取文件的inode编号

9.恢复节点为18090的文件.

extundelete --restore-inode 18090  /dev/sdb5    // 恢复节点为18090的文件

10.恢复test.txt文件.

extundelete /dev/sdb5--restore-file /home/me/Desktop/test.txt

11.恢复test目录

 extundelete /dev/sdb5 --restore-directory /home/me/Desktop/test/

12.恢复所有文件:

 extundelete /dev/sdb5 --restore-all

使用foremost软件恢复.

   在数字取证中,通过对设备备份,可以获取磁盘镜像文件。通过分析镜像文件,可以获取磁盘存在的数据。但是很多重要数据往往已被删除。这个时候,就需要还原这些文件。Kali Linux提供一款还原专用工具Foremost。该工具通过分析不同类型文件的头、尾和内部数据结构,同镜像文件的数据进行比对,以还原文件。它默认支持19种类型文件的恢复。用户还可以通过配置文件扩展支持其他文件类型。

   foremost -h

由Jesse Kornblum,Kris Kendall和Nick Mikus制作的最新版本1.5.7。
$ foremost [-v | -V | -h | -T | -Q | -q | -a | -w-d] [-t <type>] [-s <blocks>] [-k <size>]
[-b <size>] [-c <文件>] [-o <dir>] [-i <文件]

-V - 显示版权信息并退出
-t - 指定文件类型。 (-t jpeg,pdf ...)
-d - 打开间接块检测(对于UNIX文件系统)
-i - 指定输入文件(默认为stdin)
-a - 写入所有标题,不执行错误检测(损坏的文件)
-w - 只写入审计文件,不要将任何检测到的文件写入磁盘
-o - 设置输出目录(默认为输出)
-c - 设置要使用的配置文件(默认为foremost.conf)
-q - 启用快速模式。 搜索在512字节边界上执行。
-Q - 启用安静模式。 抑制输出消息。
-v - 详细模式。 将所有消息记录到屏幕上

13 .下载安转foremost:

 sudo apt-get install foremost

14.     ’-t'选项指定了要恢复的文件等类型, '-I' 选项告诉foremost去分区‘/dev/sdb5'恢复文件。当我们成功查到需要恢复的文件的时候,可以添加'-o'选项把文件恢复到目的文件夹。

 foremost –t jpg –I /dev/sdb5 –o /media/me/disk1/recover

 或者  不指明 '-t' 类型,恢复所有类型的文件.

 foremost –I /dev/sdb5 –o /media/me/disk1/recover

   

foremost -v -T -t doc,pdf,jpg,gif(文件类型) -i /dev/sdb5 (要还原的设备)

希望你能够成功:

修改 rm指令

1.首先在根目录创建一个delete文件,更改权限,

chown me:me delete

进入到/home/me  目录下,打开 .bashrc 文件,添加:

alias rm=delete
alias rml='ls /delete'   //rml 显示回收站文件
alias urm=undelete       // urm namefile   将回收站的namefile文件恢复到当前文件夹.
undelete()
{
	mv -i /delete/$@ ./
}
delete()
{
	mv $@ /delete
}

或者 给rm 加个壳:

alias rm='rm -i'

再重申一点,重要数据要备份,要备份!!!   千万要备份!!!!!

活生生的例子.


参考:http://www.it165.net/os/html/201405/8208.html

  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:技术黑板 设计师:CSDN官方博客 返回首页

打赏作者

liguangxian2018

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值