linux环境下恢复rm误删的文件方法

目录
  • 前言
  • rm之后还有救吗
  • 使用foremost找回文件
  • 使用extundelete找回文件
  • 预防误删引发的事故
  • 总结

前言

一提到在 linux 环境下删除文件,那绝对离不开 sudo rm -rf /* 这个梗,每次看到这个命令,我都想到一幅恶搞的图片:

这个『清理垃圾』的说明真是解释的“恰到好处”,据说有小白在论坛问问题,被人开玩笑的回复了 sudo rm -rf /* 这个命令,结果问题就解决了,人也拜拜了~

从删库到跑路,一天一个入狱小技巧,所以我们一定要谨慎使用 rm -rf 命令,这相当于我们在 Windows 上使用 Shift+Delete 组合,文件不会放到回收站中,而是直接永久删除了,在 Linux 中执行 rm 命令就相当于永久删除。

虽说 sudo rm -rf /* 危险无比,但是我们很少会直接这样写,但是 rm 命令还是经常用的,这不就在前几天,辛辛苦苦写的Shell脚本就被我直接 rm -rf 删掉了,幸亏我之前将内容打印到了控制台,否则整个脚本就白写了。

rm之后还有救吗

尽管 rm 命令表示永久删除,但是不代表文件就一定找不回来,只是找回的几率有大有小。其实删除命令只是在文件节点中作删除标记,并不真正清除文件内容,如果删除后马上进行恢复,那么成功的概率还是很大的,但是如果其他用户一直在用这台机器,或者有一些写盘操作的进程一直在执行,那么这部分数据可能很快就会被覆盖。这时基本上就无法恢复该文件了。

使用foremost找回文件

foremost 是一个基于文件头和尾部信息以及文件的内建数据结构恢复文件的命令行工具,接下来是安装和恢复的步骤:

安装 foremost

CentOS系统直接运行 sudo yum install https://forensics.cert.org/centos/cert/7/x86_64//foremost-1.5.7-13.1.el7.x86_64.rpm -y 命令就可以完成

如果是Ubuntu系统请尝试命令:sudo apt install foremost

[root@VM-0-3-centos ~]# sudo yum install https://forensics.cert.org/centos/cert/7/x86_64//foremost-1.5.7-13.1.el7.x86_64.rpm -y
Loaded plugins: fastestmirror, langpacks
Repository epel is listed more than once in the configuration
foremost-1.5.7-13.1.el7.x86_64.rpm                                                     |  46 kB  00:00:01
Examining /var/tmp/yum-root-XJIfxM/foremost-1.5.7-13.1.el7.x86_64.rpm: foremost-1.5.7-13.1.el7.x86_64
Marking /var/tmp/yum-root-XJIfxM/foremost-1.5.7-13.1.el7.x86_64.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package foremost.x86_64 0:1.5.7-13.1.el7 will be installed
--> Finished Dependency Resolution
epel/7/x86_64                                                                          | 4.7 kB  00:00:00
epel/7/x86_64/group_gz                                                                 |  96 kB  00:00:00
epel/7/x86_64/updateinfo                                                               | 1.0 MB  00:00:00
epel/7/x86_64/primary_db                                                               | 7.0 MB  00:00:01
extras/7/x86_64                                                                        | 2.9 kB  00:00:00
extras/7/x86_64/primary_db                                                             | 243 kB  00:00:00
os/7/x86_64                                                                            | 3.6 kB  00:00:00
updates/7/x86_64                                                                       | 2.9 kB  00:00:00
updates/7/x86_64/primary_db                                                            |  12 MB  00:00:01

Dependencies Resolved

=====================================================================================================================
 Package                    Arch                 Version                 Repository                           Size
=====================================================================================================================
Installing:
 foremost                  x86_64           1.5.7-13.1.el7           /foremost-1.5.7-13.1.el7.x86_64          85 k

Transaction Summary
=====================================================================================================================
Install  1 Package

Total size: 85 k
Installed size: 85 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : foremost-1.5.7-13.1.el7.x86_64                                                1/1
  Verifying  : foremost-1.5.7-13.1.el7.x86_64                                                1/1

Installed:
  foremost.x86_64 0:1.5.7-13.1.el7

Complete!
[root@VM-0-3-centos ~]#

创建一个测试文件

[root@VM-0-3-centos ~]# echo "this is a important file">important.txt
[root@VM-0-3-centos ~]# pwd
/root
[root@VM-0-3-centos ~]# ls
connecttendis.sh  important.txt  restore  tarlist  tendis  test.iso
[root@VM-0-3-centos ~]# mkdir -p /tmp/restore

删除文件后尝试还原

[root@VM-0-3-centos ~]# rm important.txt
[root@VM-0-3-centos ~]# foremost -i /dev/vda1 -o /tmp/restore/
Processing: /dev/vda1
|***********Segmentation fault

执行几分钟之后崩溃,恢复失败,打开目录查看发现:

[root@VM-0-3-centos ~]# ls /tmp/restore/
audit.txt  bmp  doc   exe  htm  jpg  mov  mpg  pdf  ppt   rar  sdw  sxc  sxw  wav  xls   zip
avi        dll  docx  gif  jar  mbd  mp4  ole  png  pptx  rif  sx   sxi  vis  wmv  xlsx

看来与需要恢复的文件类型有关,换台机器再换一个png文件试试,先找一个showball.png测试文件,然后确认分区 /dev/vda1

[root@VM-0-3-centos ~]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
devtmpfs          930496       0    930496   0% /dev
tmpfs             941004      24    940980   1% /dev/shm
tmpfs             941004     508    940496   1% /run
tmpfs             941004       0    941004   0% /sys/fs/cgroup
/dev/vda1       51473868 6458344  42692404  14% /
/dev/loop0        361650  361650         0 100% /mnt/iso
tmpfs             188204       0    188204   0% /run/user/0
[root@VM-0-3-centos ~]# pwd
/root
[root@VM-0-3-centos ~]# ls
restore  showball.png

删除png文件后尝试恢复,进度条结束后即可进入指定的目录 /root/restore/ 查看

[root@VM-0-3-centos ~]# rm showball.png
rm: remove regular file ‘showball.png'? y
[root@VM-0-3-centos ~]# pwd
/root
[root@VM-0-3-centos ~]# foremost -t png -i /dev/vda1 -o /root/restore/
Processing: /dev/vda1
|*********************************************************************************************|

在指定目录下会有一个 audit.txt 统计文件和一个类型文件夹 png

[root@VM-0-3-centos ~]# ll restore/
total 40
-rw-r--r-- 1 root root 24548 Nov 27 22:57 audit.txt
drwxr-xr-- 2 root root 16384 Nov 27 22:56 png
[root@VM-0-3-centos ~]# cd restore/
[root@VM-0-3-centos restore]# ll png
total 43764
-rw-r--r-- 1 root root    3500 Nov 27 22:53 00367400.png
-rw-r--r-- 1 root root    3578 Nov 27 22:53 00367408.png
-rw-r--r-- 1 root root    3445 Nov 27 22:53 00367416.png
-rw-r--r-- 1 root root     368 Nov 27 22:53 00367432.png
-rw-r--r-- 1 root root     363 Nov 27 22:53 00367456.png
-rw-r--r-- 1 root root     392 Nov 27 22:53 00367464.png
-rw-r--r-- 1 root root     199 Nov 27 22:53 00367616.png
...

png目录下的文件名都是一些编号,与原来删除的文件完全不一样了,需要根据 audit.txt 文件确认,打开文件确认一下:

[root@VM-0-3-centos restore]# head audit.txt
Foremost version 1.5.7 by Jesse Kornblum, Kris Kendall, and Nick Mikus
Audit File

Foremost started at Sat Nov 27 22:53:48 2021
Invocation: foremost -t png -i /dev/vda1 -o /root/restore/
Output directory: /root/restore
Configuration file: /etc/foremost.conf
------------------------------------------------------------------
File: /dev/vda1
Start: Sat Nov 27 22:53:48 2021
[root@VM-0-3-centos restore]# head -n 20 audit.txt
Foremost version 1.5.7 by Jesse Kornblum, Kris Kendall, and Nick Mikus
Audit File

Foremost started at Sat Nov 27 22:53:48 2021
Invocation: foremost -t png -i /dev/vda1 -o /root/restore/
Output directory: /root/restore
Configuration file: /etc/foremost.conf
------------------------------------------------------------------
File: /dev/vda1
Start: Sat Nov 27 22:53:48 2021
Length: 49 GB (53686025728 bytes)

Num  Name (bs=512)         Size  File Offset     Comment

0:  00367400.png           3 KB       188108800       (16 x 16)
1:  00367408.png           3 KB       188112896       (16 x 16)
2:  00367416.png           3 KB       188116992       (16 x 16)
3:  00367432.png          368 B       188125184       (16 x 16)
4:  00367456.png          363 B       188137472       (16 x 16)
5:  00367464.png          392 B       188141568       (16 x 16)
...

audit.txt 文件中记录着恢复文件的简要信息,这需要你知道原来删除文件的相关信息,不然就只能一个个打开查看了,我是通过分辨率查找的

[root@VM-0-3-centos restore]# grep "1217" audit.txt
116:    12888200.png          40 KB      6598758400       (1217 x 690)
360:    38088960.png          40 KB      19501547520      (1217 x 690)

根据过滤出的信息把 12888200.png 打开发现就是自己“误删”的文件这就恢复好了

使用extundelete找回文件

extundelete 支持ext3、ext4文件系统下的文件恢复,使用 cat /etc/fstab 可以在linux环境下查看文件系统类型

[root@VM-0-3-centos ~]# cat /etc/fstab
UUID=21dbe030-aa71-4b3a-8610-3b942dd447fa            /                    ext4       noatime,acl,user_xattr 1 1
proc                 /proc                proc       defaults              0 0
sysfs                /sys                 sysfs      noauto                0 0
debugfs              /sys/kernel/debug    debugfs    noauto                0 0
devpts               /dev/pts             devpts     mode=0620,gid=5       0 0
[root@VM-0-3-centos ~]#

安装依赖文件

[root@VM-0-3-centos ~]# yum install e2fsprogs-devel
Loaded plugins: fastestmirror, langpacks
Repository epel is listed more than once in the configuration
Determining fastest mirrors
epel                                                                                  | 4.7 kB  00:00:00
extras                                                                                | 2.9 kB  00:00:00
os                                                                                    | 3.6 kB  00:00:00
updates                                                                               | 2.9 kB  00:00:00
(1/2): epel/7/x86_64/updateinfo                                                       | 1.0 MB  00:00:00
(2/2): epel/7/x86_64/primary_db                                                       | 7.0 MB  00:00:01
Resolving Dependencies
--> Running transaction check
---> Package e2fsprogs-devel.x86_64 0:1.42.9-19.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===============================================================================================================
 Package                 Arch                     Version                       Repository          Size
===============================================================================================================
Installing:
 e2fsprogs-devel        x86_64                    1.42.9-19.el7                     os              73 k

Transaction Summary
===============================================================================================================
Install  1 Package

Total download size: 73 k
Installed size: 162 k
Is this ok [y/d/N]: y
Downloading packages:
e2fsprogs-devel-1.42.9-19.el7.x86_64.rpm                                              |  73 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : e2fsprogs-devel-1.42.9-19.el7.x86_64                                  1/1
  Verifying  : e2fsprogs-devel-1.42.9-19.el7.x86_64                                  1/1

Installed:
  e2fsprogs-devel.x86_64 0:1.42.9-19.el7

Complete!
[root@VM-0-3-centos ~]#

下载extundelete源码

[root@VM-0-3-centos ~]# wget https://src.fedoraproject.org/repo/pkgs/extundelete/extundelete-0.2.4.tar.bz2/77e626ad31433680c0a222069295d2ca/extundelete-0.2.4.tar.bz2
--2021-11-28 18:36:15--  https://src.fedoraproject.org/repo/pkgs/extundelete/extundelete-0.2.4.tar.bz2/77e626ad31433680c0a222069295d2ca/extundelete-0.2.4.tar.bz2
Resolving src.fedoraproject.org (src.fedoraproject.org)... 38.145.60.20, 38.145.60.21
Connecting to src.fedoraproject.org (src.fedoraproject.org)|38.145.60.20|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 108472 (106K) [application/x-bzip2]
Saving to: ‘extundelete-0.2.4.tar.bz2'

100%[============================================================================>] 108,472     33.5KB/s   in 3.2s

2021-11-28 18:36:20 (33.5 KB/s) - ‘extundelete-0.2.4.tar.bz2' saved [108472/108472]

[root@VM-0-3-centos ~]# ls
extundelete-0.2.4.tar.bz2

解压extundelete源码

[root@VM-0-3-centos ~]# tar -jxvf extundelete-0.2.4.tar.bz2
extundelete-0.2.4/
extundelete-0.2.4/acinclude.m4
extundelete-0.2.4/missing
extundelete-0.2.4/autogen.sh
extundelete-0.2.4/aclocal.m4
extundelete-0.2.4/configure
extundelete-0.2.4/LICENSE
extundelete-0.2.4/README
extundelete-0.2.4/install-sh
extundelete-0.2.4/config.h.in
extundelete-0.2.4/src/
extundelete-0.2.4/src/extundelete.cc
extundelete-0.2.4/src/block.h
extundelete-0.2.4/src/kernel-jbd.h
extundelete-0.2.4/src/insertionops.cc
extundelete-0.2.4/src/block.c
extundelete-0.2.4/src/cli.cc
extundelete-0.2.4/src/extundelete-priv.h
extundelete-0.2.4/src/extundelete.h
extundelete-0.2.4/src/jfs_compat.h
extundelete-0.2.4/src/Makefile.in
extundelete-0.2.4/src/Makefile.am
extundelete-0.2.4/configure.ac
extundelete-0.2.4/depcomp
extundelete-0.2.4/Makefile.in
extundelete-0.2.4/Makefile.am
[root@VM-0-3-centos ~]# cd extundelete-0.2.4/
[root@VM-0-3-centos extundelete-0.2.4]# ls
acinclude.m4  aclocal.m4  autogen.sh   config.h.in  configure  configure.ac  depcomp
install-sh    LICENSE     Makefile.am  Makefile.in  missing    README        src
[root@VM-0-3-centos extundelete-0.2.4]#

编译xtundelete源码安装

[root@VM-0-3-centos extundelete-0.2.4]# ./configure --prefix=/usr/local/extundelete && make && make install
Configuring extundelete 0.2.4
Writing generated files to disk
make -s all-recursive
Making all in src
extundelete.cc: In function ‘ext2_ino_t find_inode(ext2_filsys, ext2_filsys, ext2_inode*, std::string, int)':
extundelete.cc:1272:29: warning: narrowing conversion of ‘search_flags' from ‘int' to ‘ext2_ino_t {aka unsigned int}' inside { } [-Wnarrowing]
    buf, match_name2, priv, 0};
                             ^
Making install in src
  /usr/bin/install -c extundelete '/usr/local/extundelete/bin'
[root@VM-0-3-centos extundelete-0.2.4]# which extundelete
/usr/bin/which: no extundelete in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
[root@VM-0-3-centos extundelete-0.2.4]# ll /usr/local/extundelete/bin/
total 1296
-rwxr-xr-x 1 root root 1323360 Nov 28 18:45 extundelete

如果在这一步报错 configure: error: C++ compiler cannot create executables,可以运行 yum -y install gcc-c++ 命令安装编译环境

准备测试文件

[root@VM-0-3-centos examples]# df -T
Filesystem     Type     1K-blocks    Used Available Use% Mounted on
devtmpfs       devtmpfs    930496       0    930496   0% /dev
tmpfs          tmpfs       941004      24    940980   1% /dev/shm
tmpfs          tmpfs       941004     508    940496   1% /run
tmpfs          tmpfs       941004       0    941004   0% /sys/fs/cgroup
/dev/vda1      ext4      51473868 6465732  42685016  14% /
/dev/loop0     iso9660     361650  361650         0 100% /mnt/iso
tmpfs          tmpfs       188204       0    188204   0% /run/user/0
[root@VM-0-3-centos examples]# cp ../extundelete-0.2.4.tar.bz2 .
[root@VM-0-3-centos examples]# ls
extundelete-0.2.4.tar.bz2

查询文件的inode信息

我们选择刚刚下载的extundelete源码包作为“误删”的文件,先查看一下信息,-li 可以在第一列查看文件的inode信息,examples文件夹的inode值为1311798:

[root@VM-0-3-centos ~]# ls examples/
extundelete-0.2.4.tar.bz2
[root@VM-0-3-centos ~]# ls -li
total 361676
1311798 drwxr-xr-x 2 root root      4096 Nov 28 20:28 examples
1310761 drwxr-xr-x 3 1000 1000      4096 Nov 28 18:45 extundelete-0.2.4
 918157 drwxr-xr-x 2 root root      4096 Feb 28  2021 tarlist
 396057 -rw-r--r-- 1 root root 370329600 Feb 27  2021 test.iso

删除测试文件,并用查询信息

[root@VM-0-3-centos ~]# cd examples/
[root@VM-0-3-centos examples]# ls
extundelete-0.2.4.tar.bz2
[root@VM-0-3-centos examples]# rm extundelete-0.2.4.tar.bz2 -f
[root@VM-0-3-centos examples]# ls
[root@VM-0-3-centos examples]# /usr/local/extundelete/bin/extundelete /dev/vda1 --inode 1311798
NOTICE: Extended attributes are not restored.
WARNING: EXT3_FEATURE_INCOMPAT_RECOVER is set.
The partition should be unmounted to undelete any files without further data loss.
If the partition is not currently mounted, this message indicates
it was improperly unmounted, and you should run fsck before continuing.
If you decide to continue, extundelete may overwrite some of the deleted
files and make recovering those files impossible.  You should unmount the
file system and check it with fsck before using extundelete.
Would you like to continue? (y/n)
y
Loading filesystem metadata ... 400 groups loaded.
Group: 160
Contents of inode 1311798:
0000 | ed 41 00 00 00 10 00 00 7a 62 a3 61 1b 7a a3 61 | .A......zb.a.z.a
0010 | 1b 7a a3 61 00 00 00 00 00 00 02 00 08 00 00 00 | .z.a............
0020 | 00 00 08 00 0b 00 00 00 0a f3 01 00 04 00 00 00 | ................
0030 | 00 00 00 00 00 00 00 00 01 00 00 00 79 20 50 00 | ............y P.
0040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0050 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0060 | 00 00 00 00 7c 63 ab ad 00 00 00 00 00 00 00 00 | ....|c..........
0070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0080 | 1c 00 00 00 80 da 0d a3 80 da 0d a3 94 24 04 08 | .............$..
0090 | 7a 62 a3 61 94 24 04 08 00 00 00 00 00 00 00 00 | zb.a.$..........
00a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00b0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00d0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00f0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

Inode is Allocated
File mode: 16877
Low 16 bits of Owner Uid: 0
Size in bytes: 4096
Access time: 1638097530
Creation time: 1638103579
Modification time: 1638103579
Deletion Time: 0
Low 16 bits of Group Id: 0
Links count: 2
Blocks count: 8
File flags: 524288
File version (for NFS): 2913690492
File ACL: 0
Directory ACL: 0
Fragment address: 0
Direct blocks: 127754, 4, 0, 0, 1, 5251193, 0, 0, 0, 0, 0, 0
Indirect block: 0
Double indirect block: 0
Triple indirect block: 0

File name                                       | Inode number | Deleted status
.                                                 1311798
..                                                393219
extundelete-0.2.4.tar.bz2                         396764         Deleted
conftest.err                                      1311833        Deleted
[root@VM-0-3-centos examples]#

我们发现 extundelete-0.2.4.tar.bz2 文件的状态为 Deleted

使用extundelete恢复文件

[root@VM-0-3-centos ~]# /usr/local/extundelete/bin/extundelete /dev/vda1 --restore-directory /tmp
NOTICE: Extended attributes are not restored.
WARNING: EXT3_FEATURE_INCOMPAT_RECOVER is set.
The partition should be unmounted to undelete any files without further data loss.
If the partition is not currently mounted, this message indicates
it was improperly unmounted, and you should run fsck before continuing.
If you decide to continue, extundelete may overwrite some of the deleted
files and make recovering those files impossible.  You should unmount the
file system and check it with fsck before using extundelete.
Would you like to continue? (y/n)
y
Loading filesystem metadata ... 400 groups loaded.
Loading journal descriptors ... 31842 descriptors loaded.
*** Error in `/usr/local/extundelete/bin/extundelete': double free or corruption (!prev): 0x00000000014d6020 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x81299)[0x7f5c08190299]
/usr/local/extundelete/bin/extundelete[0x40cdcb]
/usr/local/extundelete/bin/extundelete[0x40fee6]
/usr/local/extundelete/bin/extundelete[0x4045b4]
/lib64/libc.so.6(__libc_start_main+0xf5)[0x7f5c08131555]
/usr/local/extundelete/bin/extundelete[0x404aef]
======= Memory map: ========
00400000-0041c000 r-xp 00000000 fd:01 1311942                            /usr/local/extundelete/bin/extundelete
0061c000-0061d000 r--p 0001c000 fd:01 1311942                            /usr/local/extundelete/bin/extundelete
0061d000-0061e000 rw-p 0001d000 fd:01 1311942                            /usr/local/extundelete/bin/extundelete
0061e000-0061f000 rw-p 00000000 00:00 0
014c6000-0176e000 rw-p 00000000 00:00 0                                  [heap]
7f5c00000000-7f5c00021000 rw-p 00000000 00:00 0
7f5c00021000-7f5c04000000 ---p 00000000 00:00 0
7f5c07ca1000-7f5c07ef3000 rw-p 00000000 00:00 0
7f5c07ef3000-7f5c07f0a000 r-xp 00000000 fd:01 265649                     /usr/lib64/libpthread-2.17.so
7f5c07f0a000-7f5c08109000 ---p 00017000 fd:01 265649                     /usr/lib64/libpthread-2.17.so
7f5c08109000-7f5c0810a000 r--p 00016000 fd:01 265649                     /usr/lib64/libpthread-2.17.so
7f5c0810a000-7f5c0810b000 rw-p 00017000 fd:01 265649                     /usr/lib64/libpthread-2.17.so
7f5c0810b000-7f5c0810f000 rw-p 00000000 00:00 0
7f5c0810f000-7f5c082d2000 r-xp 00000000 fd:01 265623                     /usr/lib64/libc-2.17.so
7f5c082d2000-7f5c084d2000 ---p 001c3000 fd:01 265623                     /usr/lib64/libc-2.17.so
7f5c084d2000-7f5c084d6000 r--p 001c3000 fd:01 265623                     /usr/lib64/libc-2.17.so
7f5c084d6000-7f5c084d8000 rw-p 001c7000 fd:01 265623                     /usr/lib64/libc-2.17.so
7f5c084d8000-7f5c084dd000 rw-p 00000000 00:00 0
7f5c084dd000-7f5c084f2000 r-xp 00000000 fd:01 291206                     /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7f5c084f2000-7f5c086f1000 ---p 00015000 fd:01 291206                     /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7f5c086f1000-7f5c086f2000 r--p 00014000 fd:01 291206                     /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7f5c086f2000-7f5c086f3000 rw-p 00015000 fd:01 291206                     /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7f5c086f3000-7f5c087f4000 r-xp 00000000 fd:01 287349                     /usr/lib64/libm-2.17.so
7f5c087f4000-7f5c089f3000 ---p 00101000 fd:01 287349                     /usr/lib64/libm-2.17.so
7f5c089f3000-7f5c089f4000 r--p 00100000 fd:01 287349                     /usr/lib64/libm-2.17.so
7f5c089f4000-7f5c089f5000 rw-p 00101000 fd:01 287349                     /usr/lib64/libm-2.17.so
7f5c089f5000-7f5c08ade000 r-xp 00000000 fd:01 266798                     /usr/lib64/libstdc++.so.6.0.19
7f5c08ade000-7f5c08cde000 ---p 000e9000 fd:01 266798                     /usr/lib64/libstdc++.so.6.0.19
7f5c08cde000-7f5c08ce6000 r--p 000e9000 fd:01 266798                     /usr/lib64/libstdc++.so.6.0.19
7f5c08ce6000-7f5c08ce8000 rw-p 000f1000 fd:01 266798                     /usr/lib64/libstdc++.so.6.0.19
7f5c08ce8000-7f5c08cfd000 rw-p 00000000 00:00 0
7f5c08cfd000-7f5c08d3f000 r-xp 00000000 fd:01 267873                     /usr/lib64/libext2fs.so.2.4
7f5c08d3f000-7f5c08f3f000 ---p 00042000 fd:01 267873                     /usr/lib64/libext2fs.so.2.4
7f5c08f3f000-7f5c08f40000 r--p 00042000 fd:01 267873                     /usr/lib64/libext2fs.so.2.4
7f5c08f40000-7f5c08f42000 rw-p 00043000 fd:01 267873                     /usr/lib64/libext2fs.so.2.4
7f5c08f42000-7f5c08f45000 r-xp 00000000 fd:01 265948                     /usr/lib64/libcom_err.so.2.1
7f5c08f45000-7f5c09144000 ---p 00003000 fd:01 265948                     /usr/lib64/libcom_err.so.2.1
7f5c09144000-7f5c09145000 r--p 00002000 fd:01 265948                     /usr/lib64/libcom_err.so.2.1
7f5c09145000-7f5c09146000 rw-p 00003000 fd:01 265948                     /usr/lib64/libcom_err.so.2.1
7f5c09146000-7f5c09168000 r-xp 00000000 fd:01 265614                     /usr/lib64/ld-2.17.so
7f5c092b1000-7f5c0935d000 rw-p 00000000 00:00 0
7f5c09363000-7f5c09367000 rw-p 00000000 00:00 0
7f5c09367000-7f5c09368000 r--p 00021000 fd:01 265614                     /usr/lib64/ld-2.17.so
7f5c09368000-7f5c09369000 rw-p 00022000 fd:01 265614                     /usr/lib64/ld-2.17.so
7f5c09369000-7f5c0936a000 rw-p 00000000 00:00 0
7ffe581db000-7ffe581fc000 rw-p 00000000 00:00 0                          [stack]
7ffe581fc000-7ffe581fe000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
Aborted
[root@VM-0-3-centos ~]#

恢复失败,此路不通!!!

有其他人成功了,但是我测试失败,释放内存崩溃,有大神给说一下怎么改源码吗?此处存疑,后续再测,先记录一下常用参数。

查询inode文件状态:/usr/local/extundelete/bin/extundelete /dev/vda1 --inode 1311798

恢复指定节点数据:/usr/local/extundelete/bin/extundelete /dev/vda1 --restore-inode 1311798

恢复单个文件:/usr/local/extundelete/bin/extundelete /dev/vda1 --restore-file root/examples/extundelete-0.2.4.tar.bz2

恢复一个目录:/usr/local/extundelete/bin/extundelete /dev/vda1 --restore-files root/examples

恢复所有文件:/usr/local/extundelete/bin/extundelete /dev/vda1 --restore-all

预防误删引发的事故

定义别名,提示删除

定义别名 alias rm='rm -i', 在删除文件前会出现一个提示,使用 -i 选项来需要逐个确认要删除的文件,只有用户输入 y 才会将文件删除,但是这种做法在加上 -f 选项之后会失效。

禁用rm,使用mv代替

在系统中不允许直接使用rm命令直接删除文件,需要mv文件到指定的回收目录 /.delete,然后配合一个定时任务,每周清空/.delete下文件,相当于手动创建了一个回收站。

总结

使用foremost恢复时的目标目录最好是另外一个磁盘中的目录,把文件恢复到被删除文件所在的磁盘中很可能会在恢复前覆盖被误删的文件

sodu 的全称目前有 substitute user dosuper user do 两种说法,使用sudo通常是行驶超级用户的权限,但有时也可以其他普通用户,所以翻译成 substitute user do 代替其他用户来做更准确一点

foremost 支持的文件系统比较多,其中包括 ext2、 ext3 、vfat、NTFS、ufs、jfs 等,但是只能恢复特定格式的文件,而 extundelete 只支持ext3、ext4文件系统,不过可恢复的文件类型很多。

除了本文中总结的这两款不怎么好用的恢复软件,还有 testdisk 和 photorec 可以用来恢复,后续可以尝试一下数据无价,请谨慎删除,可参考别名方法或禁用 rm -rf 来减少事故的发生

到此这篇关于linux环境下恢复rm误删的文件方法的文章就介绍到这了,更多相关linux恢复rm误删的文件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Linux恢复删除文件的lsof命令详解

    lsof命令 lsof命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP.UDP).找回/恢复删除的文件.是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行. 在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操

  • linux中误删除程序包恢复实例

    本文主要是介绍linux中误删除程序包恢复实例,小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧. 以CentOS-7.2为例: 删除kernel包,无法重启: 1.删除kernel包 2.重启,无法启动 3.再次重启,出现进度条时按下Esc键,出现如下界面,选择从光盘启动 4.进入如下界面,选择Troubleshooting 5.选择救援模式,Rescue a CentOS system 6.键入回车 7.选择Continue ,键入1,进入 8.回车进入shell

  • Linux利用lsof/extundelete工具恢复误删除的文件或目录

    前言 Linux不像windows有那么显眼的回收站,不是简单的还原就可以了. linux删除文件还原可以分为两种情况,一种是删除以后在进程存在删除信息,一种是删除以后进程都找不到,只有借助于工具还原.这里分别检查介绍下 一,误删除文件进程还在的情况. 这种一般是有活动的进程存在持续标准输入或输出,到时文件被删除后,进程PID还是存在.这也就是有些服务器删除一些文件但是磁盘不释放的原因.比如当前举例说明: 通过一个shell终端对一个测试文件做cat追加操作: [root@21yunwei_ba

  • linux grub的启动加密及删除恢复方法

    一.实验1:设置grub口令 1.生成一个加密运算为"nd5"的密码 2.设置grub口令 3.测试grub是否已加密 4.在虚拟机的下图的图形界面中,直接敲"Esc"或者"e"键 5.在图形的框下,提示只能敲"p"键,原因是因为grub加密的原因 6.直接敲"p"键后提示要求输入密码,将刚才编辑的密码填入 7.输入密码后,已经进入了编辑菜单界面 8.直接敲"a"键进入了"gr

  • linux环境下恢复rm误删的文件方法

    目录 前言 rm之后还有救吗 使用foremost找回文件 使用extundelete找回文件 预防误删引发的事故 总结 前言 一提到在 linux 环境下删除文件,那绝对离不开 sudo rm -rf /* 这个梗,每次看到这个命令,我都想到一幅恶搞的图片: 这个『清理垃圾』的说明真是解释的"恰到好处",据说有小白在论坛问问题,被人开玩笑的回复了 sudo rm -rf /* 这个命令,结果问题就解决了,人也拜拜了~ 从删库到跑路,一天一个入狱小技巧,所以我们一定要谨慎使用 rm -

  • Linux环境下Apache开启https服务的方法详解

    本文实例讲述了Linux环境下Apache开启https服务的方法.分享给大家供大家参考,具体如下: 首先申请SSL证书,以阿里云为例,找到域名管理: 免费开启SSL证书: 配置单域名免费证书:(有效期一年) 点击确定,验证证书: 审核成功后可以下载证书: 下载Apache的SSL证书: 解压出来这三个我放到了Apache安装目录/etc/httpd/cert下面 httpd.conf 里面加这个(引入conf.d文件夹下面的全部conf): Include conf.d/*.conf 运行这两

  • Linux环境下Apache服务器配置二级域名的方法详解

    本文实例讲述了Linux环境下Apache服务器配置二级域名的方法.分享给大家供大家参考,具体如下: (以域名www.csdn.net为例,现在需要配置一个二级域名blog.csdn.net指向主机地址) 首先,确认开启Apache配置文件httpd.conf中的mod_rewrite模块: 这里科普一下这个模块: 接下来我们需要登录所购域名运营商的域名管理后台,点击'域名解析': 手动添加或一键快速添加下面两条默认解析,形如www.csdn.net和csdn.net的域名就可以访问主机地址了

  • Linux环境下使用glog日志库的方法

    生成linux库 Linux版本使用的centos7.3,编译生成库 1.  cd glog-0.3.3 2.  ./configure 3. make make完成后会在.lib下生成相应的库文件 Linux下使用glog库 Linux使用静态库来测试,copy静态库libglog.a和src/glog的头文件到自己的工程目录,创建main.cpp文件,添加如下代码: /******************************************************** Copyr

  • Linux环境下查看日志文件命令详解

    目录 前言 一.cat命令: 二.more命令: 三.less命令: 四.head命令: 五.tail命令: 六.tac命令: 七.echo命令: 八.grep命令: 九.sed命令: 混合命令: 附加: 前言 当日志存储文件很大时,我们就不能用 vi 直接去查看日志了,就需要Linux的一些内置命令去查看日志文件. 系统Log日志位置: /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 /var/log/secure 与安全相关的日志

  • Linux环境下的备份

    Linux系统管理员常常问的一个问题是:如何备份我的系统?对于windows系统来说,进行备份是很简单的工作(仅仅需要在菜单模式下点击鼠标就可以完成). Linux备份工作则要麻烦的多,若你不熟悉Linux系统文件和设备,情况则会变得更糟.该篇文章讨论了在Linux环境下保护数据的方法和相关的设备信息. 1.什么是备份? 最简单的讲,备份数据的过程就是拷贝重要的数据到其他的介质之上(通常是可移动的),以保证在原始数据丢失的情况下可以恢复数据.一次备份可能是简单的cp命令,将一个文件复制到其他目录

  • Linux环境下的高级隐藏技术

    摘要:本文深入分析了Linux环境下文件.进程及模块的高级隐藏技术,其中包括:Linux可卸载模块编程技术.修改内存映象直接对系统调用进行修改技术,通过虚拟文件系统proc隐藏特定进程的技术. 隐藏技术在计算机系统安全中应用十分广泛,尤其是在网络攻击中,当攻击者成功侵入一个系统后,有效隐藏攻击者的文件.进程及其加载的模块变得尤为重要.本文将讨论Linux系统中文件.进程及模块的高级隐藏技术,这些技术有的已经被广泛应用到各种后门或安全检测程序之中,而有一些则刚刚起步,仍然处在讨论阶段,应用很少.

  • Linux环境下使用XFS文件系统

    XfS文件系统是SGI开发的高级日志文件系统,XFS极具伸缩性,非常健壮.所幸的是SGI将其移植到了Lin ux系统中.在linux环境下.目前版本可用的最新XFS文件系统的为1.2版本,可以很好地工作在2.4核心下. 一.XFS文件系统简介 主要特性包括以下几点: 数据完全性 采用XFS文件系统,当意想不到的宕机发生后,首先,由于文件系统开启了日志功能,所以你磁盘上的文件不再会意外宕机而遭到破坏了.不论目前文件系统上存储的文件与数据有多少,文件系统都可以根据所记录的日志在很短的时间内迅速恢复磁

  • linux环境下卸载oracle 11g的过程

    1.停库 [oracle@testdb ~]$ sqlplus / as sysdba SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> exit 2.停监听 [oracle@testdb ~]$ lsnrctl stop LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 23-DEC-2016 14

  • linux环境下编写shell脚本实现启动停止tomcat服务的方法

    第一步:以管理员的身份进入控制台,在指定目录下新建一个shell脚本,我这里命名为tomcat.sh 第二步:编写shell脚本 #!/bin/bash tomcat_home=/usr/tomcat/apache-tomcat-8.0.48 SHUTDOWN=$tomcat_home/bin/shutdown.sh STARTTOMCAT=$tomcat_home/bin/startup.sh case $1 in start) echo "启动$tomcat_home" $STAR

随机推荐