文件删除和恢复的原理:
首先简单介绍一下Linux文件系统的最基本单元:inode。inode译成中文就是索引节点,每个存储设备(例如硬盘)或存储设备的分区被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是block,block是用来存储数据用的。而inode呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode为每个文件进行信息索引,所以就有了inode的数值。在ext3和ext4文件系统中,每个文件都是通过inode来描述其数据存放的具体位置,当文件被删除以后,inode的数据指针部分被清零,文件目录区没有太多变化。文件的读写都是通过inode来实现,当inode数据指针被清零以后,即便文件内容还在,也没有办法把文件内容组合出来。当ext3和ext4文件系统中的元数据metadata发生变化时,相应的元数据metadata在日志文件会有一份拷贝。比如一个文件被删除了,它的inode信息会在日志文件中先保存一份,然后把要删除文件inode相关信息清零。这个日志文件是循环使用的,当操作过多时,删除的文件的inode日志记录会被新的数据替换,这就彻底丧失了根据inode找回数据的机会了。如果是大量文件的删除,这个日志文件会被反复循环利用多次,只留给最后删除的那些文件的恢复机会。
umount /sdb 卸载分区(如果系统有多个个分区的话,建议卸载) 所以推荐用户安装系统时,分配多个分区.
或者 mount -o remount,ro /dev/sdb -f (-f 强制) 只读分区(恢复点和系统在一个分区)
如果出现:
root@me# mount -r -n -o remount /dev/sdb5
mount: / is busy
查看/dev/sdb5 分区占用情况.(所以将分区改为只读)
root@me# fuser -v -m /dev/sdb
USER PID ACCESS COMMAND
/dev/sdb: root kernel mount /
root 1 .rce. systemd
root 2 .rc.. kthreadd
root 3 .rc.. ksoftirqd/0
root 5 .rc.. kworker/0:0H
3.下载安装恢复软件,extundelete
4.使用extundelete恢复;
yum install e2fsprogs e2fsprogs-devel
yum install extundelete
7. 查抄分区的目录删除状况. 2 代表从根目录开始查找.
extundetele --inode 2 /dev/sdb
8.查找目录的innode编号
ls -i //获取文件的inode编号
12.恢复所有文件:
extundelete /dev/sdb --restore-all
13、10.恢复指定的时间点后被删文件
1).指定一个时间点
# date -d "Sep 4 03:09:13 2013" +%s
------------------
1378235353
------------------
2).恢复这个时间点后的文件
# extundelete --restore-all --after “1563760744” /dev/sdb
11.检验是否恢复成功
# md5sum RECOVERED_FILES/mysql-5.6.10.tar.gz
------------------------------------
9dcee911fb4bc7e977a6b63f4d3ffa63 RECOVERED_FILES/mysql-5.6.10.tar.gz
------------------------------------
上传刚才误删的mysql安装包