东莞网站公司排名,海口网站开发建设,wordpress格式刷,简约网站首页引子指在键上飘#xff0c;难免会湿手套。当你按下shiftdel键后#xff0c;会不会突然心里凉透#xff0c;当你执行rm -rf后#xff0c;会不会马上去搜索哪个国家入境不需要签证。或者你还会遇到如下的情况#xff1a;root4xem7:~# aliasalias cdrm -rfalias ddocker数据恢…引子指在键上飘难免会湿手套。当你按下shiftdel键后会不会突然心里凉透当你执行rm -rf后会不会马上去搜索哪个国家入境不需要签证。或者你还会遇到如下的情况root4xem7:~# aliasalias cdrm -rfalias ddocker数据恢复原理浅析如图所示硬盘上数据的存放有一个类似于书本目录的东西存在就是图中最上面那一排圆形。硬盘格式化后被分割成了很多个小块就像蜂巢一样一个个的小房间就是上图中间部分的长方块这个小房间才是真正存放数据的地方最下面的数字是房间号也就是inode号。如果我们要使用文件A在最上面的目录里面就能很快的知道文件A在1号房间。➤什么情况下被误删的数据能恢复误删情况发生后第一重要的事情就是卸载误删数据所在的分区而不是关机绝对不能关机为什么现在所有的系统优化其本质就是把硬盘IO转换成内存IO就是把本该到硬盘里面去读写的内容提前预载到内存里面去。你若正常关机redis持久化的数据可能有好几个Gmysql的InnoDB_Buffer_Pool缓冲池里面的东西(可能有好几十个G)这些东西往硬盘里面一写你还想恢复数据等我发明时光机吧。为什么说马上卸载分区数据就能恢复。看下图rm -rf删除了A文件。其实系统只是删除了目录里面的文件指向文件A还好好的趟在1号房间里面。所以这种情况文件是能很轻松的恢复的。➤什么情况下被误删的数据不能恢复承接上一张图目录里面显示1号房间是空的可以重新放数据进去若此时硬盘又接收到写入请求(比方说你脑抽把数据恢复软件安装到了误删数据所在的分区)就会把数据写入1号房间此时你若还想恢复数据只能等我发明时光机了。extundelete恢复举例extundelete可以恢复ext3、ext4文件系统下被误删的文件看其恢复原理xfs文件系统应该也是可以恢复的。安装extundelete在安装extundelete前需要安装e2fsprogs和e2fsprogs-libs自行用yum安装就可以。[rootdish ~]# rpm -qa |grep e2fsprogse2fsprogs-libs-1.41.12-22.el6.x86_64e2fsprogs-1.41.12-22.el6.x86_64epel源里面有extundelete直接安装就行。[rootdish ~]# yum install extundelete -y[rootdish ~]# rpm -ql extundelete/usr/bin/extundelete/usr/share/doc/extundelete-0.2.4/usr/share/doc/extundelete-0.2.4/LICENSE/usr/share/doc/extundelete-0.2.4/READMEextundelete常用参数解释Options:--superblock 显示超级块信息默认选项.--journal 显示日志信息.--after dtime 表示在某段时间之后被删除的文件或目录.--before dtime 表示在某段时间之前被删除的文件或目录.Actions:--inode ino Show info on inode ino.--block blk Show info on block blk.--restore-inode ino[,ino,...]恢复指定inode号的文件恢复出来的文件会放在当前目录下的RECOVERED_FILES文件夹中--restore-file path 恢复指定路径的文件--restore-files path 恢复在路径中列出的所有文件--restore-all 尝试恢复所有目录和文件恢复文件➤测试文件[rootdish reco]# for i in A B C D;do echo this is file$i$i;done[rootdish reco]# cat A B C Dthis is fileAthis is fileBthis is fileCthis is fileD[rootdish reco]# find ./ -type f |xargs md5sum ./file.md5[rootdish reco]# cat file.md5d41d8cd98f00b204e9800998ecf8427e ./file.md5c2f9bc9edb959d08dc838af14c5cd8ff ./Cafc688bfcd0666302ed55da472ecfbb8 ./B0a540f40e1e8c3e5ad50571f1621d5b3 ./A2c3fdd8c8e23a1ba2d0381981f337348 ./D[rootdish reco]# rm -rf A B C D[rootdish reco]# lsfile.md5➤卸载磁盘分区发现数据误删后只做一件事卸载数据所在分区[rootdish reco]# cd[rootdish ~]# umount /dev/vdb1➤查询可恢复的数据首先查看数据所在目录reco的inode号[rootdish ~]# extundelete /dev/vdb1 --inode 2 |grep recoreco 131073reco目录的inode号131073[rootdish ~]# extundelete /dev/vdb1 --inode 131073 |tailTriple indirect block: 0File name | Inode number | Deleted status. 131073.. 2A 131074 DeletedB 131075 DeletedC 131076 DeletedD 131077 Deletedfile.md5 131078如上所示标记为Deleted状态的就是误删的文件同时还能看到对应文件的inode值有了这些我们就可以恢复文件了。[rootdish ~]# extundelete /dev/vdb1 --restore-file reco/CNOTICE: Extended attributes are not restored.Loading filesystem metadata ... 160 groups loaded.Loading journal descriptors ... 2858 descriptors loaded.Successfully restored file reco/C[rootdish ~]# extundelete /dev/vdb1 --restore-file reco/DNOTICE: Extended attributes are not restored.Loading filesystem metadata ... 160 groups loaded.Loading journal descriptors ... 2858 descriptors loaded.Successfully restored file reco/D--restore-file 后面的reco/C是个相对路径其原本的路径是/bak/reco/C而bak目录挂载的就是/dev/vdb1。文件恢复成功后会在你执行恢复命令的当前目录生成一个RECOVERED_FILES目录恢复出来的文件就在里面。[rootdish ~]# cd RECOVERED_FILES/reco/[rootdish reco]# md5sum -c file.md5./C: OK./B: OK./A: OK./D: OK恢复出来的文件经过MD5校验全通过。恢复成功。恢复目录[rootdish reco]# mkdir mulu[rootdish reco]# cd !$cd mulu[rootdish mulu]# touch {01..09}[rootdish mulu]# ls01 02 03 04 05 06 07 08 09[rootdish mulu]# cd ..[rootdish reco]# rm -rf mulu[rootdish reco]# cd[rootdish ~]# r umountumount /dev/vdb1[rootdish ~]# extundelete /dev/vdb1 --restore-directory /reco/muluNOTICE: Extended attributes are not restored.Loading filesystem metadata ... 160 groups loaded.Loading journal descriptors ... 2857 descriptors loaded.Searching for recoverable inodes in directory /reco/mulu ...10 recoverable inodes found.Looking through the directory structure for deleted files ...2 recoverable inodes still lost.[rootdish reco]# ls mulu/01 02 03 04 05 06 07 08目录被成功恢复注意目录里面的空文件是无法恢复的09就是一个空文件。恢复所有文件需要恢复的文件数量过多的时候可以用这个选项。[rootdish tmp]# extundelete /dev/vdb1 --restore-all恢复某个时间点之后删除的文件这个应该是用的最多的场景了比方说需要恢复一个小时内被删除的文件。extundelete --after echo $(date %s)-3600 |bc --restore-all /dev/vdb1一个小时3600秒根据自己需求修改上面的减数。原创文章转载请注明 转载自笛声