本文目录
利用 Linux 系统软件恢复数据-lsof利用 Linux 系统软件恢复数据-extundelete在任何企业环境中,系统中所存储的数据信息都是至关重要,因此如果不小心删除了重要文件,轻则会给系统服务运行带来影响,重则会给整个公司企业带来重大的经济损失,所以在删除文件数据时必须谨慎的操作。但是,正所谓常在河边走,哪有不湿鞋的,有时候墨菲定律就是常出现在我们的生活中,越不想发生的事,越可能出现。在应对数据不小心误删除情况时,类似于 windows 系统误删了文件,可以使用一些软件进行恢复操作。同样,Linux 也是有几款软件可以做到误删除软件之后的数据恢复,本文就给大家介绍几种亲测有效的数据误删除恢复方式。
虽然有软件可以对误删的数据进行恢复,但是完全恢复数据的概率并不是百分百的。因此,使用 rm 命令删除文件的时候,建议大家做好以下几点。
重要的数据在进行编辑修改时,一定要有备份数据信息;
在无用数据文件信息进行删除操作时,建议可以先放入临时目录几天,系统服务运行无影响后再删除清理磁盘空间;
一旦误操作删除数据时,恢复删除的数据前,删除文件的目录内不能往进存放新东西,否则覆盖掉的信息无法找回
lsof(list open files)是一个查看进程打开的文件的工具。在 linux 系统中一切皆文件,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以 lsof 命令不仅可以查看进程打开的文件、目录,还可以查看进程监听的端口等 socket 相关的信息。
这个命令实际上并不能直接用来恢复文件,不过它可以列出被各种进程打开的文件信息。配合其他命令,从/proc 目录下的信息中恢复已删除的文件,但能恢复的文件必须是被进程调用打开的状态。
/proc 目录是挂载的是在内存中所映射的一块区域,当我们对这些文件进行读取和写入时,实际上是在从内存中获取相关信息。因此,当我们对文件进行读取或写入时(即有进程正使用文件时),哪怕硬盘中的该文件已删除,还可以从内存中的信息恢复文件。
以上命令输出信息,各列代表含义解释说明:
编号信息各列信息含义解释①COMMAND服务进程名称信息②PID服务进程 PID 编号信息③TID服务线程 TID 编号信息④USER服务进程管理者用户信息⑤FD用来识别该文件,文件描述符信息⑥TYPE用来识别该文件所属类型⑦DEVICE指定设备存储编号信息⑧SIZE指定文件的大小信息⑨NODE索引节点信息,文件在磁盘上的标识⑩NAME具体打开文件的路径和确切名称此命令长使用参数介绍:
编号信息参数信息参数解释①-c显示某进程现在打开的文件②-p显示哪些文件被某 pid 进程打开③-g显示归属某 pgid 的进程情况④-d显示目录下被进程开启的文件⑤-i显示打开指定端口的进程环境准备阶段:
准备恢复数据的环境,在/test/目录创建一个文件 oldboy.txt,其中一个远程连接会话窗口在编辑查看此文件,然后另一个终端将其删除
A 窗口 ssh 连接会话中,准备出要准备删除的数据信息,并同时查看打开文件
[root@web01 ~]# mkdir /test/ 在 /var/spool/mail/root 中有邮件 [root@web01 ~]# touch /test/oldboy.txt [root@web01 ~]# echo oldboyedu.com >/test/oldboy.txt [root@web01 ~]# less /test/oldboy.txt oldboyedu.com /test/oldboy.txt (END)B 窗口 ssh 连接会话中,查看被加载的文件进程信息
[root@web01 ~]# lsof -c less COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ---部分无关信息省略--- less 28025 root 4r REG 8,3 14 68076441 /test/oldboy.txt将打开文件进行删除,查看打开文件状态信息,发现进程加载的文件显示 deleted 信息,目录下已经不存在被删除的文件数据
[root@web01 ~]# rm -f /test/oldboy.txt [root@web01 ~]# lsof -c less COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ---部分无关信息省略--- less 28025 root 4r REG 8,3 14 68076441 /test/oldboy.txt (deleted) [root@web01 ~]# ll /test 总用量 0切换到/proc 下,删除文件对应的进程的 pid 下的文件描述符中的目录中;将对应的内容重定向或 cp 到其他文件中,重点关注:PID 与 FD。
[root@web01 fd]# cd /proc/28025/fd/ [root@web01 fd]# cat 4 oldboyedu.com [root@web01 fd]# ll 总用量 0 lrwx------. 1 root root 64 9 月 28 22:03 0 -> /dev/pts/1 lrwx------. 1 root root 64 9 月 28 22:03 1 -> /dev/pts/1 lrwx------. 1 root root 64 9 月 28 22:03 2 -> /dev/pts/1 lr-x------. 1 root root 64 9 月 28 22:03 3 -> /dev/tty lr-x------. 1 root root 64 9 月 28 22:03 4 -> /test/oldboy.txt (deleted) [root@web01 fd]# cat 4 oldboyedu.com [root@web01 fd]# cat 4 >/test/oldboy.txt_recovery [root@web01 fd]# cat /test/oldboy.txt_recovery oldboyedu.com至此,丢失数据信息恢复完毕
Extundelete 是在 Linux 下,基于开源的数据恢复工具。使用阿里云的云服务器 ECS,您可以方便地安装,及时还原误删除的重要文件。
extundelete 恢复文件时并不依赖特定文件格式,首先 extundelete 会通过文件系统的 inode 信息,来获得当前文件系统下所有文件的信息,包括存在的和已经删除的文件,这些信息包括文件名和 inode。然后利用 inode 信息结合日志去查询该 inode 所在的 block 位置,包括直接块,间接块等信息。最后利用 dd 命令将这些信息备份出来,从而恢复数据文件。相比于另一种 ext3grep 数据恢复软件只能恢复 ext3 文件系统的文件,其适用范围更广,恢复速度更快。
软件安装环境准备
软件名称部署信息链接地址extundelete官方网站地址http://extundelete.sourceforge.net/extundelete程序下载地址https://jaist.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2最新版本的 extundelete 是 0.2.4,于 2013 年 1 月发布,暂时未有更新版本上表中是软件程序的获取方式,可以提前进行下载保存。
解决软件安装依赖关系:
# centos安装操作 yum install -y e2fsprogs-devel e2fsprogs* gcc* # ubuntu安装操作 apt-get install build-essential e2fslibs-dev e2fslibs-dev软件编译安装部署过程:
wget https://jaist.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2 tar xf extundelete-0.2.4.tar.bz2 cd extundelete-0.2.4 ./configure make make install执行extundelete命令的当前目录必须是可写的.
查看要恢复文件的分区挂载情况与文件系统类型:
[root@web01 ~]# df -Th 文件系统 类型 容量 已用 可用 已用% 挂载点 ---部分无关信息省略--- /dev/sdb1 ext4 9.8G 37M 9.2G 1% /mnt在指定分区挂载目录中创建数据信息,并删除:
[root@web01 ~]# cd /mnt [root@web01 mnt]# mkdir test [root@web01 mnt]# echo oldboyedu.com >test/oldboy.txt [root@web01 mnt]# cat test/oldboy.txt oldboyedu.com [root@web01 mnt]# rm -rf test/ [root@web01 mnt]# echo oldboyedu.com >oldboy.txt [root@web01 mnt]# rm -f oldboy.txt将要恢复文件的分区进行卸载操作:
[root@web01 ~]# umount /mnt查看可以恢复的数据
# 指定误删除文件的分区进行查找,最后一列标记为delete的文件,即为删除了的文件 File name | Inode number | Deleted status . 2 .. 2 lost+found 11 test 393217 Deleted oldboy01.txt 12 Deleted恢复单个目录
# 指定要恢复的目录名,如果是空目录则不会恢复 extundelete /dev/vdb1 --restore-directory test当执行恢复文件的命令后,会在执行命令的当前的目录下生成RECOVERED_FILES目录,恢复的文件都会放入此目录中。如未生成目录即为失败。 恢复单个文件
# 指定要恢复的文件名,如果几k大小的小文件,有很大几率恢复失败 extundelete /dev/vdb1 --restore-file oldboy01.txt恢复全部删除的文件
# 无需指定文件名或目录名,恢复全部删除的数据 extundelete /dev/vdb1 --restore-all原文链接:https://www.cnblogs.com/oldboy-heqing/articles/13744890.html