zoukankan      html  css  js  c++  java
  • centos文件误删除恢复

    Centos 文件误删除

    当意识到误删除文件后,切忌千万不要再频繁写入了,否则 你的数据恢复的数量将会很少。 而我们要做的是,第一时间把服务器上的服务全部停掉,直接killall 进程名 或者 kill -9 pid 。 然后把误删除文件所在分区,重新挂载成ro,只读的 (mount  -o ro  /dev/sdb2  /data/)。

    然后我们需要去下载和安装一个工具叫做   extundelete

    1.安装依赖包
    # yum install e2fsprogs* -y

    2.下载并安装extundelete
    # wget http://nchc.dl.sourceforge.net/p ... elete-0.2.4.tar.bz2
    # tar -jxvf extundelete-0.2.4.tar.bz2
    # cd extundelete-0.2.4
    # ./configure --prefix=/usr/local/extundelete
    # make && make install

    3.验证是否安装成功
    # cd /usr/local/extundelete/bin
    # ./extundelete -v
    ---------------------
    extundelete version 0.2.4
    libext2fs version 1.41.12
    Processor is little endian.
    ---------------------

    假如我们误删除文件所在分区为/dev/sdb2  
    恢复步骤如下:

    /usr/local/extundelete/bin/extundelete  /dev/sdb2 --inode 2    //可以扫描哪些文件被删除了

    假如我们有一个文件叫做1.txt被删除了。 那么恢复它的命令为:

    /usr/local/extundelete/bin/extundelete --restore-file 1.txt  /dev/sdb2

    被恢复的文件在  当前目录下的  RECOVERED_FILES/ 目录  
    ls  ./RECOVERED_FILES/  可以看到有1.txt


    而想恢复整个分区上的文件可以这样:
    /usr/local/extundelete/bin/extundelete --restore-all  /dev/sdb2 

    恢复后的文件也是在   ./RECOVERED_FILES/  下,能否恢复就看你的运气好不好了。 


    当然后续工作还有:
    1. 重新挂载该分区为可写
    2. 备份一下重要数据
    3. 覆盖我们恢复出来的数据
    4. 重启服务器,恢复各种服务

    二、日志文件恢复

    首先使用lsof来查看当前是否有进程打开/var/logmessages文件,如下: 
    # lsof |grep /var/log/messages
    syslogd   1283      root    2w      REG        3,3  5381017    1773647 /var/log/messages (deleted)

    从上面的信息可以看到 PID 1283(syslogd)打开文件的文件描述符为 2。同时还可以看到/var/log/messages已经标记被删除了。因此我们可以在 /proc/1283/fd/2 (fd下的每个以数字命名的文件表示进程对应的文件描述符)中查看相应的信息,如下:

    # head -n 10 /proc/1283/fd/2
    Aug  4 13:50:15 holmes86 syslogd 1.4.1: restart.
    Aug  4 13:50:15 holmes86 kernel: klogd 1.4.1, log source = /proc/kmsg started.
    Aug  4 13:50:15 holmes86 kernel: Linux version 2.6.22.1-8 (root@everestbuilder.linux-ren.org) (gcc version 4.2.0) #1 SMP Wed Jul 18 11:18:32 EDT 2007
    Aug  4 13:50:15 holmes86 kernel: BIOS-provided physical RAM map:
    Aug  4 13:50:15 holmes86 kernel:  BIOS-e820: 0000000000000000 - 000000000009f000 (usable)
    Aug  4 13:50:15 holmes86 kernel:  BIOS-e820: 000000000009f000 - 00000000000a0000 (reserved)
    Aug  4 13:50:15 holmes86 kernel:  BIOS-e820: 0000000000100000 - 000000001f7d3800 (usable)
    Aug  4 13:50:15 holmes86 kernel:  BIOS-e820: 000000001f7d3800 - 0000000020000000 (reserved)
    Aug  4 13:50:15 holmes86 kernel:  BIOS-e820: 00000000e0000000 - 00000000f0007000 (reserved)
    Aug  4 13:50:15 holmes86 kernel:  BIOS-e820: 00000000f0008000 - 00000000f000c000 (reserved)

    # cat /proc/1283/fd/2 > /var/log/messages

    对于应用程序,日志文件,数据库可用这种方法恢复数据。

    本文根据阿铭linux论坛帖子整理!!!

  • 相关阅读:
    架构设计之NodeJS操作消息队列RabbitMQ
    如何搭建一个功能复杂的前端配置化框架(一)
    Web as a App(Web既APP)的概念可以提出吗?
    Bottle源码阅读笔记(二):路由
    Bottle源码阅读笔记(一):WSGI
    Python__slots__详解
    [译]如何在Web开发中使用Python
    C#中Internal关键字的总结
    [DataContract]引用
    分享一个与ABP配套使用的代码生成器源码
  • 原文地址:https://www.cnblogs.com/rohero/p/5301237.html
Copyright © 2011-2022 走看看