美文网首页Linux管理
linux rm -rf * 文件全空恢复记

linux rm -rf * 文件全空恢复记

作者: Kevin_Hhui | 来源:发表于2020-08-07 11:23 被阅读0次

    起因:一个R报错,通过Google查找解决办法,建议删除.rstudio文件


    R报错

    于是我执行了rm -rf .rstudio*,在这之前我其实通过ls看了当前目录的文件(得知所有文件均在该目录下),但我还是按了enter。转念一想,好像犯了大错,此时我再看我服务器下的文件时---空空如也。内心是崩溃的,我的所有代码均未备份,其实其他文件倒没什么,主要还是代码。

    于是我开始了坎坷的文件恢复之旅(Linux知识扩增记)

    1. lsof查看删除的文件进程是否还存在。

    这里用到一个命令lsof,利用apt-get安装。接着利用lsof查看删除的文件 是否还在

     lsof | grep deleted
    

    结果发现不存在了,补:若这种情况进程还存在 ,那么可以开始进行以下恢复操作

    恢复命令:

    cp /proc/pid/fd/1/指定目录/文件名
    

    进入进程目录,一般是进入/proc/pid/fd/,针对当前情况:

    cd /proc/20464/fd
    ll
    

    恢复操作:

    cp 1/tmp/testdelete.py
    

    查看文件:

    cat /tmp/testdelete.py
    

    恢复完成。

    2.误删除的文件进程已经不存在,借助于工具还原。采用的工具是extundelete第三方工具。

    2.1停止对当前分区做任何操作,防止inode被覆盖。inode被覆盖基本就告别恢复了。比如停止所在分区的服务,卸载目录所在的设备,有必要的情况下都可以断网。2.通过dd命令对当前分区进行备份,防止第三方软件恢复失败导致数据丢失。适合数据非常重要的情况,这里测试,就没有备份,如备份可以考虑如下方式:

    dd if=/path/filename of=/dev/vdc1
    

    2.2通过umount命令,对当前设备分区卸载。或者fuser 命令。

    #先查看要恢复文件的分区的文件系统
    df  -Th
    #再卸载
    umount /dev/vdb1 
    

    2.3如果提示设备busy,可以用fuser命令强制卸载:

    fuser -m -v -i -k /dev/vdb1
    

    2.4下载第三方工具extundelete安装,搜索误删除的文件进行还原。

    wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
    tar jxvf extundelete-0.2.4.tar.bz2
    cd extundelete-0.2.4
    ./configure 
    make && make install
    #或直接在主服务器
    sudo apt-get install extundelete
    

    2.5扫描误删除的文件

    extundelete /dev/vdb1 --inode 2 (根分区的inode值是2)
    

    3.通过扫描发现了我们删除的文件夹,现在执行恢复操作。

    3.1 恢复单一文件passwd

    extundelete /dev/vdb1 --restore-file passwd
    

    恢复文件是放到了当前目录RECOVERED_FILES。 查看恢复的文件:

    tail -5 RECOVERED_FILES/passwd 
    

    3.2恢复目录deletetest

    extundelete /dev/vdb1 --restore-directory deletetest
    

    3.3恢复所有

    extundelete /dev/vdb1 --restore-all
    

    3.4恢复指定inode

    extundelete /dev/vdb1 --restore-inode 14
    

    注意恢复inode的时候,恢复出来的文件名和之前不一样,需要单独进行改名。内容一般是没问题的。

    虽然最终还是没有把文件恢复过来,但是经历了这次“打击”,我相信后面在使用rm时一定会更加小心以及及时做好代码和重要文件的备份,也希望观看帖子的各位都不要遇到这种情况,不说了,我要开始重新“搬砖”了。

    罗曼罗兰广为流传的一句话:“There is only one heroism in the world: to see the world as it is and to love it.”世界上只有一种英雄主义,那就是认识生活的真相后依然爱它.

    如何在Linux上恢复误删除的文件或目录
    (Linux)误删文件恢复命令及方法
    Linuxt通过命令lsof或者extundelete工具恢复误删除的文件或者目录
    寸言

    相关文章

      网友评论

        本文标题:linux rm -rf * 文件全空恢复记

        本文链接:https://www.haomeiwen.com/subject/jnffdktx.html