黑帽联盟

 找回密码
 会员注册
查看: 3236|回复: 1
打印 上一主题 下一主题

[基础服务] linux系统服务器误删文件的恢复过程(全网最完善,原创)

[复制链接]

295

主题

18

听众

965

积分

管理员

Rank: 9Rank: 9Rank: 9

  • TA的每日心情
    难过
    2024-11-13 00:16
  • 签到天数: 370 天

    [LV.9]以坛为家II

    原因:误删了/data0/tcsql/cankao/phpcws-1.5.0/httpcws.cpp文件。由于忘了备份httpcws.cpp文件,重新开发工作量较大,因此只有恢复该文件一条路可走。

      debugfs命令针对EXT2分区还行,但对EXT3分区就帮不上忙了。偶然发现的一款开源软件,解决了我的大忙。该软件下载网址为:http://code.google.com/p/ext3grep/  

      1、先安装ext3grep软件:
    wget http://ext3grep.googlecode.com/files/ext3grep-0.10.1.tar.gz
    tar zxvf ext3grep-0.10.1.tar.gz
    cd ext3grep-0.10.1
    ./configure
    make
    make install

      2、umount /data0分区:
    umount /data0
      如果提示busy,先kill正在使用这个目录的进程,再umount:
    fuser -k /data0
    umount /data0

      3、查询所有Inode,(执行需要几分钟~十多分钟):
    ext3grep /dev/sdb1 --ls --inode 2
    193002x3tf0pvwfo9t3t0p.gif.thumb.jpg

      4、逐级查找Inode,看是否能找到httpcws.cpp文件(此步骤也可省略):
    193003yk2lt4otoztoqk5q.gif.thumb.jpg
    193003mete6bgiebul77lo.gif.thumb.jpg
     5、恢复/data0/tcsql/cankao/phpcws-1.5.0/httpcws.cpp文件:
    ext3grep /dev/sdb1 --restore-file tcsql/cankao/phpcws-1.5.0/httpcws.cpp
    193248vdiczmyux6x2zacv.gif.thumb.jpg

      如果提示以下信息,则表示恢复成功:
      Restoring tcsql/cankao/phpcws-1.5.0/httpcws.cpp
      这时,执行ext3grep命令的当前目录下将会自动生成一个名为RESTORED_FILES的文件夹,文件夹下的tcsql/cankao/phpcws-1.5.0/httpcws.cpp即为恢复的文件。查看了一下,和被删除前的内容一样,大功告成。


      6、重新mount /data0分区:
    mount /dev/sdb1 /data0



    注意:执行第三步,可能汇报如下的错误:
    ext3grep: init_directories.cc:534: void init_directories(): Assertion `lost_plus_found_directory_iter != all_directories.end()' failed.

    原因:这个工具有一个bug,出错后不会向下执行ext3grep: init_directories.cc:534: void init_directories(): Assertion `lost_plus_found_directory_iter != all_directories.end()' failed.,从而造成恢复失败,作者放出了一个补丁,下载地址:链接: http://pan.baidu.com/s/1i5sfwfr 密码: t646

    解决办法:记住,把它放到解压好的ext3grep目录里面,重新编译安装ext3grep。


    再次执行第三步,如果还报如下的错误:
    ext3grep-0.2.0 - ext3grep.cc:4130: bool init_directories_action(): Assertion `first_block != -1' failed.

    原因及解决办法:如果报错记得删除 ext3grep执行目录 下的 sda2.ext3grep.stage* , 其中的sda2是我的分区。 这个问题还导致了其他错误,不过具体不记得出错点了,总之如果时间不是很紧张的话, 做下一个命令前 记得删sda2.ext3grep.stage*就好了



    还有一种如下:
    Assertion `device.good()' failed (in get_block.cc:37)

    解决方法: 选择一个足够大的分区来存储恢复的文件。
    帖子永久地址: 

    黑帽联盟 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与黑帽联盟享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和黑帽联盟的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、黑帽联盟管理员和版主有权不事先通知发贴者而删除本文

    1

    主题

    0

    听众

    15

    积分

    黑帽菜鸟

    Rank: 1

  • TA的每日心情
    慵懒
    2017-5-17 12:51
  • 签到天数: 13 天

    [LV.3]偶尔看看II

    学习学习 支持黑帽联盟
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 会员注册

    发布主题 !fastreply! 收藏帖子 返回列表 搜索
    回顶部