• linux 系统下 恢复被误删文件


    昨天一个同事不小心删除了写了2天的代码,在入库前。

    在另一个同学的指导下~~帮助其找到了丢失的三对 .h/.cpp文件,还蛮有成就感,简述下过程,说不定以后用得着。

    如果误删了文件,最好尽快用此方法,拖得越久,磁盘中的数据越有可能被覆盖掉,真的覆盖掉了。。。恐怕再想恢复就不那么简单了,所以一旦发现了误删文件需要做的第一件事,关闭这个磁盘上有写操作的程序或者干脆unmount~

    好吧,开始恢复。

    1. 需要root权限,获得root权限是第一步

    2. 进入root权限后,确定被误删文件坐在的磁盘

    #df -h 

    Filesystem Size Used Avail Use% Mounted on
    /dev/hda1 9.9G 2.9G 6.5G 31% /
    /dev/xvda 896G 795G 56G 94% /home

    这里,我们的文件应该是在/home目录下

    3. 执行

    #echo "lsdel" | debugfs /dev/xvda > inodes.list

    打开inodes.list会看到如下格式的文件

    debugfs: lsdel

    inode Owner Mode Size BLocks Time deleted

    xxx xxx xxx xxx xxx xxx

    ...

    x deleted inodes found.

    debugfs:

    注意这里边的第一列inode,Size,Time deleted这三列很重要

    Size和Time deleted可以大致过滤出可以的inode,因为你丢失的文件大小和删除时间,你是知道的,做一个简单的过滤,【用awk,具体我就不写了】,然后我们拿到一个 inode的list,格式是这样 a.list 然后执行

    xxxxxxxx

    xxxxxxx

    xxxxxx

    xxxx

    4. #将inodedump到文件中

    for inode in `cat a.list`

    do

      echo "dump <${inode}> /home/uname/path/to/tmp/${inode}" | debugfs /dev/xvda

    done

    5. 之后,检查/home/uname/path/to/tmp/ 目录,里边应该会有一堆 inode号为文件名的恢复出来的文件,但是原来的文件名和目录层次是已经完全丢失了的,,剩下的大家自己就知道怎么做了,,grep一下,如果是cpp的,grep一下被include的有代表性的库文件巴拉巴拉~~~

    啦啦啦,饿了吃饭去。

    喜欢一起简单,实用的东西,拒绝复杂花哨,我不是GEEK.
  • 相关阅读:
    PTA 1022 Digital Library (30分) 坑多需谨慎!!!
    PAT 1013 Battle Over Cities (25分) 图的连通分量+DFS
    PAT 1021 Deepest Root (25分) 从测试点3超时到满分再到代码优化
    Java面向对象-------多态总结
    C后端设计开发
    C后端设计开发
    C后端设计开发
    C后端设计开发
    C后端设计开发
    一个真正的客户端非阻塞的 connect
  • 原文地址:https://www.cnblogs.com/igloo1986/p/3007127.html
Copyright © 2020-2023  润新知