精华内容
下载资源
问答
  • linux删除文件还原可以分为两种情况,一种是删除以后在进程存在删除信息,一种是删除以后进程都找不到,只有借助于工具还原,这里分别检查介绍下。 一、误删除文件进程还在的情况。 这种一般是有活动的进程存在...

    Linux不像windows有那么显眼的回收站,不是简单的还原就可以了。linux删除文件还原可以分为两种情况,一种是删除以后在进程存在删除信息,一种是删除以后进程都找不到,只有借助于工具还原,这里分别检查介绍下。

    一、误删除文件进程还在的情况。

    这种一般是有活动的进程存在持续标准输入或输出,到时文件被删除后,进程PID还是存在。这也就是有些服务器删除一些文件但是磁盘不释放的原因。比如当前举例说明:通过一个shell终端对一个测试文件做cat追加操作:

    [root@21yunwei_backup ~]# echo  "hello  py"> testdelete.py[root@21yunwei_backup ~]# cat  >> testdelete.py hello delete

    另外一个终端查看这个文件可以清楚看到内容:

    [root@21yunwei_backup ~]# cat testdelete.py hello  pyhello delete

    此时,在当前服务器删除文件rm -f ./testdelete.py

    命令查看这个目录,文件已经不存在了,那么现在我们将其恢复出来。

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

    这里用到一个命令lsof,如没有安装请自行yum或者apt-get。类似这种情况,我们可以先lsof查看删除的文件 是否还在:

    [root@21yunwei_backup ~]# lsof | grep deletedmysqld     1512   mysql    5u      REG              252,306312397/tmp/ibzW3Lot (deleted)cat       20464    root    1w      REG              252,3231310722/root/testdelete.py (deleted)

    幸运的是这种情况进程还存在 ,那么开始进行恢复 操作。

    2、恢复。

    恢复命令:

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

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

    [root@21yunwei_backup ~]# cd   /proc/20464/fd[root@21yunwei_backup fd]# lltotal 0lrwx------ 1 root root 64Nov1518:120> /dev/pts/1l-wx------ 1 root root 64Nov1518:121> /root/testdelete.py (deleted)lrwx------ 1 root root 64Nov1518:122> /dev/pts/1

    恢复操作:

    cp 1/tmp/testdelete.py

    查看文件:

    [root@21yunwei_backup fd]# cat  /tmp/testdelete.pyhello  pyhello delete

    恢复完成。

    二、误删除的文件进程已经不存在,借助于工具还原。

    创建准备删除的目录并echo一个 带有内容的文件:

    [root@21yunwei_backup 21yunwei]# tree.├── deletetest│   └── mail│       └── test.py├── lost+found└── passwd3 directories, 2 files[root@21yunwei_backup 21yunwei]# cat /21yunwei/deletetest/mail/test.py hello Dj[root@21yunwei_backup 21yunwei]# tail  -2  passwd haproxy:x:500:502::/home/haproxy:/bin/bashtcpdump:x:72:72::/:/sbin/nologin

    执行删除操作:

    [root@21yunwei_backup 21yunwei]# rm  -rf    ./*[root@21yunwei_backup 21yunwei]# lltotal 0

    现在开始进行误删除文件的恢复。这种情况一般是没有守护进程或者后台进程对其持续输入,所以删除就删除了,lsof也看不到。就要借助于工具。这里我们采用的工具是extundelete第三方工具。恢复步骤如下:

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

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

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

    umount /dev/vdb1 或者 umount /21yunwei

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

    fuser -m -v -i -k /21yunwei

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

    wget  http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2tar jxvf extundelete-0.2.4.tar.bz2cd  extundelete-0.2.4./configure makemake  install

    扫描误删除的文件:

    [root@21yunwei_backup extundelete-0.2.4]# extundelete  --inode 2/dev/vdb1NOTICE: Extended attributes are not restored.Loading filesystem metadata ... 8 groups loaded.Group: 0Contents of inode 2:..省略N行File name                                       | Inode number | Deleted status.                                                 2..                                                2lost+found                                        11Deleteddeletetest                                        12Deletedpasswd                                            14Deleted

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

    1、恢复单一文件passwd

    [root@21yunwei_backup /]# extundelete /dev/vdb1 --restore-file passwd   NOTICE: Extended attributes are not restored.Loading filesystem metadata ... 8 groups loaded.Loading journal descriptors ... 46 descriptors loaded.Successfully restored file passwd

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

    [root@21yunwei_backup /]# tail  -5  RECOVERED_FILES/passwd mysql:x:497:500::/home/mysql:/bin/falsenginx:x:496:501::/home/nginx:/sbin/nologinzabbix:x:495:497:ZabbixMonitoringSystem:/var/lib/zabbix:/sbin/nologinhaproxy:x:500:502::/home/haproxy:/bin/bashtcpdump:x:72:72::/:/sbin/nologin

    2、恢复目录deletetest

    [root@21yunwei_backup /]# extundelete /dev/vdb1 --restore-directory  deletetest NOTICE: Extended attributes are not restored.Loading filesystem metadata ... 8 groups loaded.Loading journal descriptors ... 46 descriptors loaded.Searchingfor recoverable inodes in directory deletetest ... 5 recoverable inodes found.Looking through the directory structure for deleted files ... [root@21yunwei_backup /]# cat  RECOVERED_FILES/deletetest/mail/test.py hello Dj

    3、恢复所有

    [root@21yunwei_backup /]# extundelete /dev/vdb1 --restore-allNOTICE: Extended attributes are not restored.Loading filesystem metadata ... 8 groups loaded.Loading journal descriptors ... 46 descriptors loaded.Searchingfor recoverable inodes in directory / ... 5 recoverable inodes found.Looking through the directory structure for deleted files ... 0 recoverable inodes still lost. [root@21yunwei_backup /]# cd RECOVERED_FILES/[root@21yunwei_backup RECOVERED_FILES]# tree.├── deletetest│   └── mail│       └── test.py└── passwd2 directories, 2 files

    4、恢复指定inode

    [root@21yunwei_backup /]# extundelete /dev/vdb1 --restore-inode 14NOTICE: Extended attributes are not restored.Loading filesystem metadata ... 8 groups loaded.Loading journal descriptors ... 46 descriptors loaded.[root@21yunwei_backup /]# tail  -5/RECOVERED_FILES/file.14mysql:x:497:500::/home/mysql:/bin/falsenginx:x:496:501::/home/nginx:/sbin/nologinzabbix:x:495:497:ZabbixMonitoringSystem:/var/lib/zabbix:/sbin/nologinhaproxy:x:500:502::/home/haproxy:/bin/bashtcpdump:x:72:72::/:/sbin/nologin

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

    更多的extundelete用法请参考extundelete –help选项参数说明,当前恢复所有的操作完成。

    展开全文
  • Linux中有一种可怕的误操作 ——rm -rf删除文件。对于数据库而言,如果误删除了数据文件,而数据库进程还没挂掉的话,可以尝试抢救一下。注意误rm后千万不要去重启数据库。对于其他文件,下面方法也是适用的,也...

    Linux中有一种可怕的误操作 —— rm -rf 误删除文件。对于数据库而言,如果误删除了数据文件,而数据库进程还没挂掉的话,可以尝试抢救一下。注意误rm后千万不要去重启数据库。对于其他文件,下面方法也是适用的,也要注意千万不要去重启相关进程。

     

    一、 误删除用户数据文件模拟

    高危操作,没事千万不要在生产环境执行。

    SQL> select name from v$datafile;
    
    NAME
    --------------------------------------------------------------------------------
    /data/oradata/ocrl/datafile/system01.dbf
    /data/oradata/ocrl/datafile/sysaux01.dbf
    /data/oradata/ocrl/datafile/undotbs01.dbf
    /data/oradata/ocrl/datafile/users01.dbf
    /data/oradata/ocrl/datafile/test.dbf
    cd /data/oradata/ocrl/datafile/
    
    ls
    sysaux01.dbf  system01.dbf  test.dbf  undotbs01.dbf  users01.dbf
    
    rm -rf test.dbf
    
    ls
    sysaux01.dbf  system01.dbf  undotbs01.dbf  users01.dbf

    尝试在test表空间中创建表,开始报错

    SQL> create table t tablespace test as select * from dual;
    create table t tablespace test as select * from dual
                                                    *
    ERROR at line 1:
    ORA-01116: error in opening database file 5
    ORA-01110: data file 5: '/data/oradata/ocrl/datafile/test.dbf'
    ORA-27041: unable to open file
    Linux-x86_64 Error: 2: No such file or directory
    Additional information: 3

    如果发现了误操作,千万先冷静,千万别想着先重启试试,重启雪上加霜。

     

    二、 通过进程打开的文件句柄进行恢复

    恢复的原理是,在Linux中,如果文件从操作系统级别被rm掉,之前打开该文件的进程仍然持有相应的文件句柄,所指向的文件仍然可以读写,并且该文件的文件描述符可以从/proc目录中获得。但是要注意的是,此时如果关闭数据库,则此句柄会消失,那么除了扫描磁盘进行文件恢复之外就没有其它方法了。因此在数据库出现问题的时候,如果不确认情况的复杂程度,千万不要随便关闭数据库。重启数据库往往是没有意义的,甚至是致命的。

     

    1. 检查dbwr的进程PID

    ps -ef|grep dbw0
    
    oracle    6121     1  0 Feb07 ?        00:00:32 ora_dbw0_ocrl
    oracle   19015 18603  0 11:52 pts/1    00:00:00 grep dbw0

     

    2. 检查dbwr打开的所有文件句柄

    dbwr会打开所有数据文件的句柄,在/proc目录中可以查到,目录是进程PID,fd表示文件描述符。

    cd /proc/6121/fd
    
    ls -l
    #输出
    lr-x------ 1 oracle dba 64 Feb  7 10:11 0 -> /dev/null
    l-wx------ 1 oracle dba 64 Feb  7 10:11 1 -> /dev/null
    l-wx------ 1 oracle dba 64 Feb  7 10:11 2 -> /dev/null
    lrwx------ 1 oracle dba 64 Feb  7 10:11 256 -> /data/oradata/ocrl/control/control01.ctl
    lrwx------ 1 oracle dba 64 Feb  7 10:11 257 -> /data/oradata/ocrl/control/control02.ctl
    lrwx------ 1 oracle dba 64 Feb 10 11:42 258 -> /data/oradata/ocrl/datafile/system01.dbf
    lrwx------ 1 oracle dba 64 Feb 10 11:42 259 -> /data/oradata/ocrl/datafile/sysaux01.dbf
    lrwx------ 1 oracle dba 64 Feb 10 11:42 260 -> /data/oradata/ocrl/datafile/undotbs01.dbf
    lrwx------ 1 oracle dba 64 Feb 10 11:42 261 -> /data/oradata/ocrl/datafile/users01.dbf
    lrwx------ 1 oracle dba 64 Feb 10 11:42 262 -> /data/oradata/ocrl/datafile/test.dbf (deleted) <-------- 注意这个
    lrwx------ 1 oracle dba 64 Feb 10 11:42 263 -> /data/oradata/ocrl/tempfile/temp01.dbf
    lr-x------ 1 oracle dba 64 Feb  7 10:11 3 -> /dev/null
    lr-x------ 1 oracle dba 64 Feb  7 10:11 4 -> /u01/app/oracle/product/12.1.0/db_1/rdbms/mesg/oraus.msb
    lr-x------ 1 oracle dba 64 Feb  7 10:11 5 -> /proc/6121/fd
    lrwx------ 1 oracle dba 64 Feb  7 10:11 6 -> /u01/app/oracle/product/12.1.0/db_1/dbs/hc_ocrl.dat
    l-wx------ 1 oracle dba 64 Feb  7 10:11 7 -> /u01/app/oracle/product/12.1.0/db_1/rdbms/mesg/oraus.msb
    lrwx------ 1 oracle dba 64 Feb  7 10:11 9 -> /u01/app/oracle/product/12.1.0/db_1/dbs/lkOCRL

    注意其中 /data/oradata/ocrl/datafile/test.dbf (deleted) 字样,表示该文件已经被删除

    有一个比较简单的找法是利用 lsof 命令

    lsof -p dbw进程pid |grep deleted

    例如

    ps -ef|grep dbw 
    oracle    3317     1  0 Jul26 ?        00:01:04 ora_dbw0_ols
    
    lsof -p 3317 |grep deleted
    
    COMMAND    PID   USER   FD   TYPE DEVICE   SIZE/OFF    NODE NAME
    ora_dbw0_ 3317 oracle  259uW  REG  254,0 5451030528 1979159 /home/oracle/data/OLS_DATA.dbf (deleted)
    ora_dbw0_ 3317 oracle  262uW  REG  254,0  536879104 1979158 /home/oracle/data/OLS_IDX.dbf (deleted)

     

    3. 将该句柄文件名复制回原位置

    cp 262 /data/oradata/ocrl/datafile/test.dbf
    
    cd /data/oradata/ocrl/datafile/
    
    ls
    sysaux01.dbf  system01.dbf  test.dbf  undotbs01.dbf  users01.dbf

     

    4. 进行数据文件recover

    SQL> alter database datafile 5 offline;
    Database altered.
    
    SQL> recover datafile 5;
    Media recovery complete.
    
    SQL> alter database datafile 5 online;
    Database altered.
    
    SQL> select file#,name from v$datafile;
         FILE#   NAME
    -----------  ---------------------------------------------------------------------
         1       /data/oradata/ocrl/datafile/system01.dbf
         2       /data/oradata/ocrl/datafile/sysaux01.dbf
         3       /data/oradata/ocrl/datafile/undotbs01.dbf
         4       /data/oradata/ocrl/datafile/users01.dbf
         5       /data/oradata/ocrl/datafile/test.dbf

    测试建表

    SQL> create table t tablespace test as select * from dual;
    Table created.
    
    SQL> select * from t;
    
    D
    -
    X

    至此完成数据文件恢复
     

    参考

    https://blog.csdn.net/shiyu1157758655/article/details/54967857

    https://blog.csdn.net/killvoon/article/details/82493334

    https://blog.csdn.net/guoguo1980/article/details/2324454

    展开全文
  • linux使用rm -rf删除数据后恢复

    千次阅读 2020-09-11 20:31:41
    centos7 rm之后数据恢复的方式 仅供自己学习参考 如果文件没有被使用 初次测试发现基本无法恢复。 场景1 文件正在被程序使用 创建一个文件 并用tail -f一直读取文件信息 不要使用tailf 这个文件删除后会被终止掉 ...

    centos7 rm之后数据恢复的方式

    仅供自己学习参考 如果文件没有被使用 初次测试发现基本无法恢复。

    场景1 文件正在被程序使用

    创建一个文件 并用tail -f一直读取文件信息   不要使用tailf 这个文件删除后会被终止掉
    

    在另一个窗口删除这个文件

    安装lsof并通过lsof 查看正在读取这个文件的进程

    yum -y install lsof
    lsof |grep delete test.txt
    

    去/proc下查找对应pid的文件句柄

    cd /proc/13419/fd
    ls -l
    

    把状态为delete的数字 copy到任意文件夹恢复

    cp 3 /opt/test.txt_bak
    # 查看test.txt_bak的内容  与原文件一致
    cat /opt/test.txt_bak
    

    场景2 文件未被程序使用

    xfs貌似没有成熟的恢复工具啊。看网上都是恢复ext4的。关于xfs我查到的都是先备份

    基本上我自己测试恢复 都无法恢复。。。也可能是我不熟练的缘故

    下面测试的工具都恢复失败,或者恢复出来的文件不对。

    查看磁盘类型

    df -lhT
    

    如果是外挂盘 应该先umount 确保没有读写操作影响恢复

    df -h 
    umount /${mount_dir}
    df -h 
    

    工具0 ReclaiMe xfs格式windows恢复软件

    官网:http://www.reclaime.com/library/xfs-recovery.aspx

    支持虚拟硬盘文件vhd,vmdk,还支持xfs格式系统。只有windows exe 我这边没有测试安装

    工具1 extundelete
    yum -y install bzip2
    cd /opt
    wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
    bzip2 -d extundelete-0.2.4.tar.bz2
    tar xvf extundelete-0.2.4.tar
    yum install -y gcc-c++ e2fsprogs-devel
    cd extundelete-0.2.4
    ./configure
    make  && make install
    /usr/local/bin/extundelete -v
    

    安装完成 查看版本号

    测试磁盘是xfs 恢复不了

    测试磁盘是ext4 这里引用了阿里云的例子

    完成以下操作,使用extundelete模拟数据误删除后恢复的过程:

    1. 检查ECS现有的磁盘和可用分区,并对/dev/vdb进行分区和格式化。

      fdisk -l
      # 此处省略格式化等命令
      

      检查磁盘和分区情况

    2. 将分区后的磁盘挂载到/zhuyun目录下,然后在/zhuyun下新建测试文件hello,并写入内容test

      mkdir /zhuyun                                #新建zhuyun目录
      mount /dev/vdb1 /zhuyun                      #将磁盘挂载到zhuyun目录下
      echo test > hello                            #写入测试文件
      
    3. 记录文件hello的md5值。md5sum命令用于生成和校验删除前和恢复后两个文件的md5值。

      md5sum hello
      

      记录文档的md5值

    4. 模拟删除hello文件。

      rm -rf hello
      cd ~
      fuser -k /zhuyun                     #结束使用某分区的进程树(确认没有资源占用的话,可以跳过此步)
      
    5. 卸载数据盘。

      umount /dev/vdb1                     #任何的文件恢复工具,在使用前,均要将要恢复的分区卸载或挂载为只读,防止数据被覆盖使用
      
    6. 使用extundelete工具恢复文件。

      1. extundelete --inode 2 /dev/vdb1       #为查找某i节点中的内容,使用2则说明为整个分区搜索,如果需要进入目录搜索,只须要指定目录I节点即可。这是可以看到删除的文件名和inode
        
      2. /usr/local/bin/extundelete  --restore-inode 12  /dev/vdb1    #恢复删除的文件
        

        这个时候会在执行命令的同级目录下出现RECOVERED_FILES目录。

        生成恢复后的文件

    7. 通过md5sum命令查看恢复后RECOVERED_FILES文件的md5值。

      md5sum RECOVERED_FILES
      

      查看删除前的hello和恢复后的RECOVERED_FILES两个文件的md5值是否一致,如果一致,则数据恢复成功。

    这一部分是自己测试失败的情况 可以跳过

    一定要umount 磁盘 不然会直接提示Space has been reallocated。我这里只有一块系统盘 vda1 所以直接被回收了。

    # 执行命令
    extundelete /dev/vda1 --inode 2239548
    # 恢复文件 最后这个file是根据上面命令获取到的名称 如图
    extundelete /dev/vda --restore-file file
    # 恢复成功的文件会在当前文件夹的RECOVERED_FILES下 会有历史版本。
    
    # 恢复目录
    extundelete /dev/vda --restore-directory testdir
    # 恢复全部
    extundelete /dev/vda --restore-all  
    

    挂一块盘测试

    初始化vdb

    [root@django ~]# fdisk  -l
    
    磁盘 /dev/vda:42.9 GB, 42949672960 字节,83886080 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0x000b2d99
    
       设备 Boot      Start         End      Blocks   Id  System
    /dev/vda1   *        2048    83875364    41936658+  83  Linux
    
    磁盘 /dev/vdb:21.5 GB, 21474836480 字节,41943040 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    
    [root@django ~]# fdisk /dev/vdb
    欢迎使用 fdisk (util-linux 2.23.2)。
    
    更改将停留在内存中,直到您决定将更改写入磁盘。
    使用写入命令前请三思。
    
    Device does not contain a recognized partition table
    使用磁盘标识符 0xa7a2f339 创建新的 DOS 磁盘标签。
    
    命令(输入 m 获取帮助):p
    
    磁盘 /dev/vdb:21.5 GB, 21474836480 字节,41943040 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0xa7a2f339
    
       设备 Boot      Start         End      Blocks   Id  System
    
    命令(输入 m 获取帮助):n
    Partition type:
       p   primary (0 primary, 0 extended, 4 free)
       e   extended
    Select (default p): p
    分区号 (1-4,默认 1):
    起始 扇区 (2048-41943039,默认为 2048):
    将使用默认值 2048
    Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
    将使用默认值 41943039
    分区 1 已设置为 Linux 类型,大小设为 20 GiB
    
    命令(输入 m 获取帮助):t
    已选择分区 1
    Hex 代码(输入 L 列出所有代码):L
    
     0  空              24  NEC DOS         81  Minix / 旧 Linu bf  Solaris
     1  FAT12           27  隐藏的 NTFS Win 82  Linux 交换 / So c1  DRDOS/sec (FAT-
     2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
     3  XENIX usr       3c  PartitionMagic  84  OS/2 隐藏的 C:  c6  DRDOS/sec (FAT-
     4  FAT16 <32M      40  Venix 80286     85  Linux 扩展      c7  Syrinx
     5  扩展            41  PPC PReP Boot   86  NTFS 卷集       da  非文件系统数据
     6  FAT16           42  SFS             87  NTFS 卷集       db  CP/M / CTOS / .
     7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux 纯文本    de  Dell 工具
     8  AIX             4e  QNX4.x 第2部分  8e  Linux LVM       df  BootIt
     9  AIX 可启动      4f  QNX4.x 第3部分  93  Amoeba          e1  DOS 访问
     a  OS/2 启动管理器 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O
     b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor
     c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad 休 eb  BeOS fs
     e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT
     f  W95 扩展 (LBA)  54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
    10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC
    11  隐藏的 FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor
    12  Compaq 诊断     5c  Priam Edisk     a9  NetBSD          f4  SpeedStor
    14  隐藏的 FAT16 <3 61  SpeedStor       ab  Darwin 启动     f2  DOS 次要
    16  隐藏的 FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS
    17  隐藏的 HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE
    18  AST 智能睡眠    65  Novell Netware  b8  BSDI swap       fd  Linux raid 自动
    1b  隐藏的 W95 FAT3 70  DiskSecure 多启 bb  Boot Wizard 隐  fe  LANstep
    1c  隐藏的 W95 FAT3 75  PC/IX           be  Solaris 启动    ff  BBT
    1e  隐藏的 W95 FAT1 80  旧 Minix
    Hex 代码(输入 L 列出所有代码):8e
    已将分区“Linux”的类型更改为“Linux LVM”
    
    命令(输入 m 获取帮助):w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    正在同步磁盘。
    [root@django ~]# part
    parted     partprobe  partx
    [root@django ~]# partprobe
    [root@django ~]# pvcreate /dev/vdb1
      Physical volume "/dev/vdb1" successfully created.
    [root@django ~]# vgcreate vg01 /dev/vdb1
      Volume group "vg01" successfully created
    [root@django ~]# lvcreate -L 19G -n lv01 vg01
      Logical volume "lv01" created.
    [root@django ~]# mkfs.ext4 /dev/vg01/lv01
    mke2fs 1.42.9 (28-Dec-2013)
    文件系统标签=
    OS type: Linux
    块大小=4096 (log=2)
    分块大小=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    1245184 inodes, 4980736 blocks
    249036 blocks (5.00%) reserved for the super user
    第一个数据块=0
    Maximum filesystem blocks=2153775104
    152 block groups
    32768 blocks per group, 32768 fragments per group
    8192 inodes per group
    Superblock backups stored on blocks:
    	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
    	4096000
    
    Allocating group tables: 完成
    正在写入inode表: 完成
    Creating journal (32768 blocks): 完成
    Writing superblocks and filesystem accounting information: 完成
    
    [root@django ~]# mount /dev/vg01/lv01 /test/
    

    开始测试

    lvm 卷 不能恢复? 直接说格式不对

    再买了一块盘测试 这回没有做lvm

    [root@django ~]# fdisk -l
    
    磁盘 /dev/vda:42.9 GB, 42949672960 字节,83886080 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0x000b2d99
    
       设备 Boot      Start         End      Blocks   Id  System
    /dev/vda1   *        2048    83875364    41936658+  83  Linux
    
    磁盘 /dev/vdb:21.5 GB, 21474836480 字节,41943040 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    
    [root@django ~]# fdisk /dev/vdb
    欢迎使用 fdisk (util-linux 2.23.2)。
    
    更改将停留在内存中,直到您决定将更改写入磁盘。
    使用写入命令前请三思。
    
    Device does not contain a recognized partition table
    使用磁盘标识符 0xb27699d1 创建新的 DOS 磁盘标签。
    
    命令(输入 m 获取帮助):p
    
    磁盘 /dev/vdb:21.5 GB, 21474836480 字节,41943040 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0xb27699d1
    
       设备 Boot      Start         End      Blocks   Id  System
    
    命令(输入 m 获取帮助):n
    Partition type:
       p   primary (0 primary, 0 extended, 4 free)
       e   extended
    Select (default p): p
    分区号 (1-4,默认 1):
    起始 扇区 (2048-41943039,默认为 2048):
    将使用默认值 2048
    Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
    将使用默认值 41943039
    分区 1 已设置为 Linux 类型,大小设为 20 GiB
    
    命令(输入 m 获取帮助):t
    已选择分区 1
    Hex 代码(输入 L 列出所有代码):8e
    已将分区“Linux”的类型更改为“Linux LVM”
    
    命令(输入 m 获取帮助):w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    正在同步磁盘。
    [root@django ~]# mkfs.ext4 /dev/vdb1
    mke2fs 1.42.9 (28-Dec-2013)
    文件系统标签=
    OS type: Linux
    块大小=4096 (log=2)
    分块大小=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    1310720 inodes, 5242624 blocks
    262131 blocks (5.00%) reserved for the super user
    第一个数据块=0
    Maximum filesystem blocks=2153775104
    160 block groups
    32768 blocks per group, 32768 fragments per group
    8192 inodes per group
    Superblock backups stored on blocks:
    	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
    	4096000
    
    Allocating group tables: 完成
    正在写入inode表: 完成
    Creating journal (32768 blocks): 完成
    Writing superblocks and filesystem accounting information: 完成
    
    [root@django ~]# mount /dev/vdb
    vdb   vdb1
    [root@django ~]# mount /dev/vdb1 /test/
    [root@django ~]# cd te
    -bash: cd: te: 没有那个文件或目录
    [root@django ~]# lscd ^C
    [root@django ~]# cd /test/
    [root@django test]# ls
    lost+found
    [root@django test]#
    

    尬住 测试了几次 都不行。。我都是删除了就umout了 要么就是inode找不到删除的文件

    报错Bad magic number in super-block when trying to open filesystem,经查证extundelete工具不能对xfs文件系统进行数据恢复.已知该工具能够对ext4文件系统进行数据恢复 测试好像也不是所有ext4 都可以

    工具2 testdisk

    恢复失败 测试的磁盘格式为xfs

    yum -y install bzip2
    cd /opt
    wget https://www.cgsecurity.org/testdisk-7.2-WIP.linux26-x86_64.tar.bz2
    bzip2 -d testdisk-7.2-WIP.linux26-x86_64.tar.bz2
    tar xvf testdisk-7.2-WIP.linux26-x86_64.tar
    cd testdisk-7.2-WIP
    
    mkdir /srv/test
    echo a > /srv/test/a.txt
    fdisk -l
    df -h 
    # 删除文件之后 下掉对应磁盘 
    rm -rf /srv/test && umount  /srv/
    df -h 
    

    恢复失败 测试的磁盘格式为ext4

    工具3 foremost
     yum install https://forensics.cert.org/centos/cert/7/x86_64//foremost-1.5.7-13.1.el7.x86_64.rpm -y
    touch 123.zip
     # 删除文件测试
     rm -rf 123.zip
     # 这里recovery文件夹必须为空
     foremost  –I /dev/vda  -o /recovery3/
    

    恢复完成之后 找不到删除的txt 只能恢复固定格式的文件 感觉一般 测试了3次 失败2次。没有生成我删除的文件 这些doc文件也没有验证

    avi, bmp, dll, doc, exe, gif, htm, jar, jpg, mbd, mov, mpg, pdf, png, ppt, rar, rif, sdw, sx, sxc, sxi, sxw, vis, wav, wmv, xls, zip

    工具4 scalpel
    yum -y install scalpel
    # 查看支持恢复的文件格式  这个好像也不支持txt格式
    cat /etc/scalpel.conf  
    

    scalpel  -c /etc/scalpel.conf  /dev/sda2 -o /pngrecovery/
    

    恢复出来也不是我想要的

    展开全文
  • linux_文件删除恢复rm -rf *)

    万次阅读 2016-08-18 12:01:44
    文件删除,需要进行恢复。 1. lsof  文件刚刚被删除,想要恢复,先尝试lsof.  #lsof |grep data.file1  # cp /proc/xxx/xxx/xx /dir/data.file1 2.   如果lsof不能看到...
    文件删除,需要进行恢复。
     
    


    1. lsof
        文件刚刚被删除,想要恢复,先尝试lsof.
       #lsof |grep data.file1
       # cp /proc/xxx/xxx/xx   /dir/data.file1

    2. 
       如果lsof不能看到文件,那么就需要使用恢复软件进行恢复。
       要做的第一件事是立刻卸载被误删除文件所在的分区,或者重新以只读方式挂载此分区。
       umount  /dev/part    或    mount -o remount,ro /dev/part
       删除一个文件,就是将文件inode(inode 是操作系统寻找文件的目录,起到索引作用)
       节点中的扇区指针清除,同时,释放这些数据对应的数据块,
       而真实的文件还存留在磁盘分区中。但是这些被删除的文件不一定会一直存留在磁盘中,当这些
       释放的数据块被操作系统重新分配时,这些被删除的数据就会被覆盖。因此要立刻卸载分区。

    3. ext3grep 
       该工具只能用于ext3文件系统,操作步骤不详细介绍.
       1> unmount /dev/part
       2> ext3grep /dev/part --ls --inode 2            ##列出可恢复文件信息
       3>ext3grep /dev/part --restore-inode N
       4>恢复到 RESTORED_FILES/
       更多命令查看 ext3grep --help


    4. extundelete
         该工具可以恢复ext3,ext4.     http://extundelete.sourceforge.net/
          
         1>fuser -k /dev/part   && unmunt /dev/part
         2>extundelete --inode 2   /dev/part
         3>extundelete --restore-inode 13 /dev/part
         4>恢复到 RECOVERD_FILES/

    root@grid1 ~]# extundelete --help
    Usage: extundelete [options] [--] device-file
    Options:
      --version, -[vV]       Print version and exit successfully.
      --help,                Print this help and exit successfully.
      --superblock           Print contents of superblock in addition to the rest.
                             If no action is specified then this option is implied.
      --journal              Show content of journal.
      --after dtime          Only process entries deleted on or after 'dtime'.
      --before dtime         Only process entries deleted before 'dtime'.
    Actions:
      --inode ino            Show info on inode 'ino'.
      --block blk            Show info on block 'blk'.
      --restore-inode ino[,ino,...]
                             Restore the file(s) with known inode number 'ino'.
                             The restored files are created in ./RECOVERED_FILES
                             with their inode number as extension (ie, file.12345).
      --restore-file 'path'  Will restore file 'path'. 'path' is relative to root
                             of the partition and does not start with a '/'
                             The restored file is created in the current
                             directory as 'RECOVERED_FILES/path'.
      --restore-files 'path' Will restore files which are listed in the file 'path'.
                             Each filename should be in the same format as an option
                             to --restore-file, and there should be one per line.
      --restore-directory 'path'
                             Will restore directory 'path'. 'path' is relative to the
                             root directory of the file system.  The restored
                             directory is created in the output directory as 'path'.
      --restore-all          Attempts to restore everything.
      -j journal             Reads an external journal from the named file.
      -b blocknumber         Uses the backup superblock at blocknumber when opening
                             the file system.
      -B blocksize           Uses blocksize as the block size when opening the file
                             system.  The number should be the number of bytes.
      --log 0                Make the program silent.
      --log filename         Logs all messages to filename.
    --log D1=0,D2=filename   Custom control of log messages with comma-separated
       Examples below:       list of options.  Dn must be one of info, warn, or
       --log info,error      error.  Omission of the '=name' results in messages
       --log warn=0          with the specified level to be logged to the console.
       --log error=filename  If the parameter is '=0', logging for the specified
                             level will be turned off.  If the parameter is
                             '=filename', messages with that level will be written
                             to filename.
       -o directory          Save the recovered files to the named directory.
                             The restored files are created in a directory
                             named 'RECOVERED_FILES/' by default.

         看上面的命令就很容易理解,各个参数的作用。


      5.note
      1> 对于空文件,不会进行恢复
      2> 可以恢复mysql表, 由于myisam是单独3个文件,恢复出来就能使用。 
      3> 建议innodb,设置innodb_file_per_table 为 ON,这样也就能恢复单表数据。
      4> 从上面可以看出,恢复工具这能恢复分区,所以,建议为应用软件单独划区进行安装,
          存放数据。
    展开全文
  • 今天测试程序的时候不小心把根目录下的bin文件删除了,慌死了,百度半天,恢复了文件。 找一份好的bin文件放到本地文件,使用docker cp 复制到docker容器的根目录下 docker cp /dockertest/bin/ Dockername:/ ...
  • linux rm - rf之后怎么恢复

    千次阅读 2019-07-09 10:30:50
    所以我们需要一步步查找,可以先从根分区 inode 查找 extundelete /dev/sdb1 --inode 2 逐级寻找项目inode直到找到了最终删除数据的目录 extundelete /dev/sda5 --inode 24904454 四、数据恢复 extundelete /dev/sda...
  • 大家好我是历史,身为liunx系统管理员,rm命令是不是经常在用呢?有没有做过rm命令以后,瞬间感觉无语的时候!...国外著名linx管理员守则中有这么一条:“慎用rm -rf命令,除非你知道此命令将带来什么
  • rm -rf 后的文件如何恢复

    千次阅读 2019-02-25 13:41:31
    rm -rf 后的文件如何恢复
  • mac rm -rf文件如何恢复

    2021-08-17 19:37:17
    找办法吧 我百度一搜 看了一个大佬的方法 APFS恢复文件 教程我放在下面https://blog.csdn.net/weixin_32287387/article/details/112419461 很不好用 我不知道是我下载的版本问题还是啥 同步出来一堆plist文件 我不...
  • 文件刚刚被删除,想要恢复,先尝试lsof. lsof |grep data.file1 cp /proc/xxx/xxx/xx /dir/data.file1 如果lsof不能看到文件,那么就需要使用恢复软件进行恢复。 要做的第一件事是立刻卸载被误删除文件...
  • xfs删除数据文件恢复

    千次阅读 2020-02-11 12:20:11
    联系:手机/微信(+86 13429648788) ...在linux7的环境(xfs文件系统格式)中,由于误操作执行了rm -rf /操作,导致系统大部分文件被删除(oracle数据库相关文件).我们对其现场进行分析,确认相关数据在磁盘底层依旧存...
  • ... 最近项目紧,没多少时间写博客,只能...rm -rf ./ 与 rm -rf / 引发的故事。 一位同事在维护测试环境的时候不小心引发了上面的故事。可怜的是故事是由我来收场…… 之前只是听运维的同事说以...
  • linux恢复 rm -rf * 误删数据

    千次阅读 2019-03-27 17:07:20
    linux恢复 rm -rf * 误删数据一、磁盘分区挂载为只读1、查看被删除文件位于哪个分区2、将对应目录重新挂载为只读二、安装数据恢复工具 extundelete1、下载extundelete-0.2.42、安装三、恢复1、模拟删除文件,设置...
  • 目录直接强行删除rm -rf 目录名称 删除文件夹实例:rm -rf /var/...需要提醒的是:使用这个rm -rf的时候一定要格外小心,linux没有回收站的,一旦删除不可恢复. 转载于:https://www.cnblogs.com/Timenow/p/68...
  • ssh删除文件夹命令 rm -rf [folder name]

    千次阅读 2019-09-16 02:16:48
    rm [file name] 删除文件 ...rm -rf [folder name] 删除文件夹 rmdir 所删除的目录,每级目录必须都为空。若任何一级目录中有文件,则不能删除。 但用rm -rf命令可以强制删除。 注意: 用...
  • Linux操作系统下使用TestDisk恢复删除的文件或目录   原创作者:szyzln/2015.10.16 转载需注明原始出处! 说明: testdisk和photorec是著名的恢复数据,而绝不能从名字上去猜测它的功能。   工具安装 DEB...
  • 在linux系统下如果你不小心误删除了一个文件价或文件如rm -rf xxx,而xxx文件夹下有非常重要的数据因为这个命令意味着一旦删除的文件是无法挽回的事实是如此吗?真的没有补救措施了吗?答案是委婉了在一定的条件下可以...
  • 本想删除一个文件夹下的一个文件,脑抽还没补全就按下了回车,直接删除了我一个“文档文件夹”! 还好恢复了,感谢那些大神了! 使用extundelete恢复文件 1.安装软件 sudo apt-get install extundelete 2.查看自己...
  • 来搜索这个问题的朋友们,大多是已经发生误删除动作了,笔者曾经 rm -rf ./* .没有敲进去,变成rm -rf /*,然后灾难发生了,是公司的软件代码服务器,结果自然不用我说了...... 本文两个目的,一是事后补救,二是...
  • rm -rf 删除文件指定移动文件位置。 建立回收站机制,它并不真正执行删除操作,而是将文件移动到一个特定目录,可以设置定时清除回收站,或者在回收站里面的文件大小达到一定容量时(或者用时间做判断)执行删除操作...
  • 记一次rm -rf之后的数据恢复操作

    万次阅读 2018-03-29 18:44:13
    缩所有的2016年的bsssvc日志tar -Jcvf bsssvc.log.2016.tar.xz bsssvc.log.2016*一条命令解决,接下来删除原有的bsssvc.log.2016*rm -rf bsssvc.log.2016*就是这条命令,自己害自己啊,连同bsssvc.log.2016.tar...
  • Linux rm -rf删除文件后的恢复

    千次阅读 2018-06-25 15:16:44
    Linux rm -rf删除文件后的恢复摘要: 大家好我是历史,身为liunx系统管理员,rm命令是不是经常在用呢?有没有做过rm命令以后,瞬间感觉无语的时候!让大家看看我的血的教训! 果真感觉蛋疼了,欲哭无泪啊!写了一天的成果,想...
  • 首先重要的事情说三遍:慎用rm -rf!!!慎用rm -rf!!!慎用rm -rf!!! 使用的工具:extundelete extundelete需要依赖e2fsprogs和e2fslibs,首先安装e2fsprogs和e2fslibs,然后下载安装extundelete。查看所删...
  • 大家好我是历史,身为liunx系统管理员,rm命令是不是经常在用呢?有没有做过rm命令以后,瞬间感觉无语的时候!...国外著名linx管理员守则中有这么一条:“慎用rm -rf命令,除非你知道此命令将带来什么后果。” 可见这个
  • extundelete执行完毕后在当前目录生产一个RECOVERED_FILES目录,里面即是恢复出来的文件,还包括文件夹。 5.任何的文件恢复工具,在使用前,均要将要恢复的分区卸载或挂载为只读,防止数据被覆盖使用。 umount ...
  • 首先提个醒,如果恢复内容较少,还是有可能实现的;若是很多的话,我建议不用报什么期望了,但是也可以试一试。笔者就是很多的情况,结果恢复过来,都是乱码,基本上没有能用。要说当时的心情,简直就是蛋疼,诶.......
  • extundelete工具恢复rm -rf 删除的目录(ext4) ext3grep工具只能用于恢复ext3文件系统下删除的文件,对于ext4文件系统,可以使用extundelete工具。使用的方法类似ext3grep...
  • linux下rm删除文件的恢复

    千次阅读 2018-10-16 16:48:29
    查看删除的文件所在分区: $df -h /dev/sda5 431G 353G 57G 87% / "/"表示home目录,可以知道分区是/dev/sda5 运行debugfs: $sudo debugfs $open /dev/sda5 $ls -d 被删除的文件绝对路径 找到...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,717
精华内容 4,286
关键字:

rmrf恢复删除文件夹