Linux 文件误删之后的恢复 (ext4文件系统)

作者: print("") 分类: linux 发布时间: 2018-05-14 00:00

ε=(´ο`*)))  emmmmm 昨天晚上一点二十,有个朋友说网站文件删除了。整整16个G的网站文件。一个微擎的小程序。

没有做任何备份的。我当时一脸蒙蔽。我说网站怎么一点备份都没有呢?   至少也有一个快照吧。!!!!

结果什么都没有。

那么就去网上找了一篇文章。看下是extundelete 的。尝试无果之后。 

我看了下文件系统。ext4 文件系统。就想到了一个软件,ext4magic

那么就安装吧。百度一波。编译的时候

configure: error: You must install the develop packages "ext2fs , blkid , e2p , uuid" to build ext4magic 

那么就yum 一下子。找了几个yum 仓库。都发现没有任何鸟用。mmp 坚持一下子。我想了下。没有就没有呗。看看有没有大神

制作的rpm 包 。

到了两点五十的时候。龌蹉。还真被我找到了。mmp 果断下载到本地。保存一波。前一个小时,真的很痛苦。为了编译ext2fs  blkid e2p uuid   

费劲了一个多小时都没用。 也是无奈了。这里给出下载地址

wget https://www.o2oxy.cn/ext4magic-0.3.1-1.2.x86_64.rpm.tar.gz

解压一下安装rpm 安装即可

龌蹉。这个软件竟然支持 时间的方式恢复,牛逼,牛逼!!!!!!

下面演示一下吧

打印目录的 Inode,这有一些可能性。

               # ext4magic /dev/sda3 -f /
               # ext4magic /dev/sda3 -I 2

              在第一示例中,输出的是文件系统根目录实际索引节点。
              在第二示例中,输入路径名称也是根目录。 即:Inode 2                                            


               # ext4magic /tmp/filesystem.iso -f / -T -x

              使用文件系统镜像 "/tmp/filesystem.iso",
              搜索并且打印所有 Block 包括根 Inode,并且打印所有不同的 Inode。(包含数据块的块列表)
              如果是目录,那么还要为每个 Inode 打印目录的内容。
              
              
               #  ext4magic /tmp/filesystem.iso -j /tmp/journal.backup -I 8195
              -t 182                                                          

              使用文件系统镜像 "/tmp/filesystem.iso" 并且读取从外部日志 "/tmp/journal.backup" 
              从日志处理 182 编号的 Inode 8195 编号。
     
     
               #  ext4magic /dev/sda3 -f user1/Documents -a $(date -d "-3 day"
              +%s) -b $(date -d "-2 day" +%s)                                 

              打印俩到三天前被删除的路径名 "user1/Documents" 的索引数据。 
              如果它是一个目录,那么(也打印)这个目录的内容。
              如果在日志找不到旧目录 blocks,目录内容将从文件系统真实内容。         



       简单实例

               # ext4magic /dev/sda3 -r -f user1/picture/cim01234.jpg -d /tmp

              恢复文件刚刚被删除 "/home/user1/picture/cim01234.jpg" .
              文件系统已正常挂载 "/home".文件路径规定从指定的文件系统根目录并不是整个 Linux 根目录
              不卸载文件系统是不可能的,文件将被写在 "/tmp/user1/picture/cim01234.jpg"                     

               # ext4magic /dev/sda3 -r

              尝试恢复在24小时前删除的所有文件,文件写在"./RECOVERDIR/"内                                   



               # ext4magic /dev/sda3 -R -a $(date -d "-5day" +%s)

              尝试恢复所有文件,即使如果他们有些已经被重写,也能恢复所有没有删除的文件。
              删除发生在四天前。                             



               # ext4magic /dev/sda3 -M -d /home/recover

              尝试多阶段的恢复所有文件在文件系统已经 "rm -rf *".
              文件写入  "/home/recover".
              (on ext4: in this version skipped the last step.)              



               #  ext4magic  /dev/sda3 -RQ -f user1/Dokuments -a 1274210280 -b
              1274211280 -d /mnt/testrecover

              尝试恢复目录结构 "user1/Dokuments/". "-b" 时间戳,你必须设置删除前的文件,
              "-a" 时间戳阻止找到旧的文件版本。这只会更好的工作。
              如果你有创建或删除文件在 "-b" 时间戳。(它会被)写入目录 "/mnt/testrecover"
              如果只有少数文件恢复,同时尝试不用选项 -Q



               #  ext4magic  /home/filesystem.iso -Lx  -f user1 | grep "jpg" >
              ./tmpfile

               #  ext4magic   /home/filesystem.iso   -i   ./tmpfile   -r   -d
              /mnt/testrecover

              尝试只恢复所有从目录结构"user1/",删除的文件在文件名具有 "jpg" (超过 24 小时)  
              并且写入进 "/mnt/testrecover"  - 使用一个临时文件 "./tmpfile" 用于文件名列表。


BUGS
       直接使用当前可读写的日志打开文件系统会读取产生坏块。
       这个坏块提供程序错误结果和不真实的结果。
       因此你应该永不使用这种文件系统,直接处于开放读写下的日志
       如果有必要,使用挂载过的文件系统,创建文件系统日志副本并且使用 -j 选项。

删除就恢复所有吧!!! 恢复1天前的删除文件!!!!

 # ext4magic /dev/sda3 -R -a $(date -d "-2day" +%s)

或者来一个四天前

 # ext4magic /dev/sda3 -R -a $(date -d "-5day" +%s)

恢复的文件会在当前目录下的RECOVERDIR文件下面 

多多支持!!!!







如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

说点什么

avatar
  Subscribe  
提醒