系统运维数据存储知识-系统数据误删除恢复
liebian365 2024-10-31 15:19 6 浏览 0 评论
本文目录
- 利用 Linux 系统软件恢复数据-lsof
- 利用 Linux 系统软件恢复数据-extundelete
操作系统数据误删除恢复方法
在任何企业环境中,系统中所存储的数据信息都是至关重要,因此如果不小心删除了重要文件,轻则会给系统服务运行带来影响,重则会给整个公司企业带来重大的经济损失,所以在删除文件数据时必须谨慎的操作。但是,正所谓常在河边走,哪有不湿鞋的,有时候墨菲定律就是常出现在我们的生活中,越不想发生的事,越可能出现。在应对数据不小心误删除情况时,类似于 windows 系统误删了文件,可以使用一些软件进行恢复操作。同样,Linux 也是有几款软件可以做到误删除软件之后的数据恢复,本文就给大家介绍几种亲测有效的数据误删除恢复方式。
注意事项:
虽然有软件可以对误删的数据进行恢复,但是完全恢复数据的概率并不是百分百的。因此,使用 rm 命令删除文件的时候,建议大家做好以下几点。
- 重要的数据在进行编辑修改时,一定要有备份数据信息;
- 在无用数据文件信息进行删除操作时,建议可以先放入临时目录几天,系统服务运行无影响后再删除清理磁盘空间;
- 一旦误操作删除数据时,恢复删除的数据前,删除文件的目录内不能往进存放新东西,否则覆盖掉的信息无法找回
1.利用 Linux 系统软件恢复数据-lsof
lsof(list open files)是一个查看进程打开的文件的工具。在 linux 系统中一切皆文件,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以 lsof 命令不仅可以查看进程打开的文件、目录,还可以查看进程监听的端口等 socket 相关的信息。
1.1 恢复数据原理介绍
这个命令实际上并不能直接用来恢复文件,不过它可以列出被各种进程打开的文件信息。配合其他命令,从/proc 目录下的信息中恢复已删除的文件,但能恢复的文件必须是被进程调用打开的状态。
/proc 目录是挂载的是在内存中所映射的一块区域,当我们对这些文件进行读取和写入时,实际上是在从内存中获取相关信息。因此,当我们对文件进行读取或写入时(即有进程正使用文件时),哪怕硬盘中的该文件已删除,还可以从内存中的信息恢复文件。
注意事项:
- 必须以 root 用户的权限运行, 因为 lsof 需要访问核心内存和各种文件;
- 只能恢复“文件已删除,但进程仍保持打开该文件的状态”的文件;
- 如果误删了目录,目录中的其他文件未被进程打开,没有进行使用的文件将无法使用此方法恢复。
1.2 命令操作输出信息
[root@web01 ~]# lsof |head -n10
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 8,3 4096 64 /
systemd 1 root rtd DIR 8,3 4096 64 /
systemd 1 root txt REG 8,3 1612152 34018594 /usr/lib/systemd/systemd
systemd 1 root mem REG 8,3 20064 45721 /usr/lib64/libuuid.so.1.3.0
systemd 1 root mem REG 8,3 265600 48715 /usr/lib64/libblkid.so.1.1.0
systemd 1 root mem REG 8,3 90248 747862 /usr/lib64/libz.so.1.2.7
systemd 1 root mem REG 8,3 157424 48741 /usr/lib64/liblzma.so.5.2.2
systemd 1 root mem REG 8,3 23968 49064 /usr/lib64/libcap-ng.so.0.0.0
systemd 1 root mem REG 8,3 19896 48599 /usr/lib64/libattr.so.1.1.0
以上命令输出信息,各列代表含义解释说明:
编号信息各列信息含义解释①COMMAND服务进程名称信息②PID服务进程 PID 编号信息③TID服务线程 TID 编号信息④USER服务进程管理者用户信息⑤FD用来识别该文件,文件描述符信息⑥TYPE用来识别该文件所属类型⑦DEVICE指定设备存储编号信息⑧SIZE指定文件的大小信息⑨NODE索引节点信息,文件在磁盘上的标识⑩NAME具体打开文件的路径和确切名称
此命令长使用参数介绍:
编号信息参数信息参数解释①-c显示某进程现在打开的文件②-p显示哪些文件被某 pid 进程打开③-g显示归属某 pgid 的进程情况④-d显示目录下被进程开启的文件⑤-i显示打开指定端口的进程
1.3 系统恢复文件操作
环境准备阶段:
准备恢复数据的环境,在/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
至此,丢失数据信息恢复完毕
2.利用 Linux 系统软件恢复数据-extundelete
Extundelete 是在 Linux 下,基于开源的数据恢复工具。使用阿里云的云服务器 ECS,您可以方便地安装,及时还原误删除的重要文件。
2.1 恢复数据原理介绍
extundelete 恢复文件时并不依赖特定文件格式,首先 extundelete 会通过文件系统的 inode 信息,来获得当前文件系统下所有文件的信息,包括存在的和已经删除的文件,这些信息包括文件名和 inode。然后利用 inode 信息结合日志去查询该 inode 所在的 block 位置,包括直接块,间接块等信息。最后利用 dd 命令将这些信息备份出来,从而恢复数据文件。相比于另一种 ext3grep 数据恢复软件只能恢复 ext3 文件系统的文件,其适用范围更广,恢复速度更快。
2.2 软件部署安装过程
软件安装环境准备
软件名称部署信息链接地址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 月发布,暂时未有更新版本
上表中是软件程序的获取方式,可以提前进行下载保存。
注意事项:
- 在数据删除之后,要卸载被删除数据所在的磁盘或是分区
- 如果是系统根分区遭到误删除,就要进入单用户模式,将根分区以只读的方式挂载,尽可能避免数据被覆盖
- 数据被覆盖后无法找回
- 恢复仍有一定的机率失败,平时应对重要数据作备份,小心使用 rm
软件安装部署过程
解决软件安装依赖关系:
# 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
2.3 系统恢复文件操作
执行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
相关推荐
- 快递查询教程,批量查询物流,一键管理快递
-
作为商家,每天需要查询许许多多的快递单号,面对不同的快递公司,有没有简单一点的物流查询方法呢?小编的回答当然是有的,下面随小编一起来试试这个新技巧。需要哪些工具?安装一个快递批量查询高手快递单号怎么快...
- 一键自动查询所有快递的物流信息 支持圆通、韵达等多家快递
-
对于各位商家来说拥有一个好的快递软件,能够有效的提高自己的工作效率,在管理快递单号的时候都需要对单号进行表格整理,那怎么样能够快速的查询所有单号信息,并自动生成表格呢?1、其实方法很简单,我们不需要一...
- 快递查询单号查询,怎么查物流到哪了
-
输入单号怎么查快递到哪里去了呢?今天小编给大家分享一个新的技巧,它支持多家快递,一次能查询多个单号物流,还可对查询到的物流进行分析、筛选以及导出,下面一起来试试。需要哪些工具?安装一个快递批量查询高手...
- 3分钟查询物流,教你一键批量查询全部物流信息
-
很多朋友在问,如何在短时间内把单号的物流信息查询出来,查询完成后筛选已签收件、筛选未签收件,今天小编就分享一款物流查询神器,感兴趣的朋友接着往下看。第一步,运行【快递批量查询高手】在主界面中点击【添...
- 快递单号查询,一次性查询全部物流信息
-
现在各种快递的查询方式,各有各的好,各有各的劣,总的来说,还是有比较方便的。今天小编就给大家分享一个新的技巧,支持多家快递,一次能查询多个单号的物流,还能对查询到的物流进行分析、筛选以及导出,下面一起...
- 快递查询工具,批量查询多个快递快递单号的物流状态、签收时间
-
最近有朋友在问,怎么快速查询单号的物流信息呢?除了官网,还有没有更简单的方法呢?小编的回答当然是有的,下面一起来看看。需要哪些工具?安装一个快递批量查询高手多个京东的快递单号怎么快速查询?进入快递批量...
- 快递查询软件,自动识别查询快递单号查询方法
-
当你拥有多个快递单号的时候,该如何快速查询物流信息?比如单号没有快递公司时,又该如何自动识别再去查询呢?不知道如何操作的宝贝们,下面随小编一起来试试。需要哪些工具?安装一个快递批量查询高手快递单号若干...
- 教你怎样查询快递查询单号并保存物流信息
-
商家发货,快递揽收后,一般会直接手动复制到官网上一个个查询物流,那么久而久之,就会觉得查询变得特别繁琐,今天小编给大家分享一个新的技巧,下面一起来试试。教程之前,我们来预览一下用快递批量查询高手...
- 简单几步骤查询所有快递物流信息
-
在高峰期订单量大的时候,可能需要一双手当十双手去查询快递物流,但是由于逐一去查询,效率极低,追踪困难。那么今天小编给大家分享一个新的技巧,一次能查询多个快递单号的物流,下面一起来学习一下,希望能给大家...
- 物流单号查询,如何查询快递信息,按最后更新时间搜索需要的单号
-
最近有很多朋友在问,如何通过快递单号查询物流信息,并按最后更新时间搜索出需要的单号呢?下面随小编一起来试试吧。需要哪些工具?安装一个快递批量查询高手快递单号若干怎么快速查询?运行【快递批量查询高手】...
- 连续保存新单号功能解析,导入单号查询并自动识别批量查快递信息
-
快递查询已经成为我们日常生活中不可或缺的一部分。然而,面对海量的快递单号,如何高效、准确地查询每一个快递的物流信息,成为了许多人头疼的问题。幸运的是,随着科技的进步,一款名为“快递批量查询高手”的软件...
- 快递查询教程,快递单号查询,筛选更新量为1的单号
-
最近有很多朋友在问,怎么快速查询快递单号的物流,并筛选出更新量为1的单号呢?今天小编给大家分享一个新方法,一起来试试吧。需要哪些工具?安装一个快递批量查询高手多个快递单号怎么快速查询?运行【快递批量查...
- 掌握批量查询快递动态的技巧,一键查找无信息记录的两种方法解析
-
在快节奏的商业环境中,高效的物流查询是确保业务顺畅运行的关键。作为快递查询达人,我深知时间的宝贵,因此,今天我将向大家介绍一款强大的工具——快递批量查询高手软件。这款软件能够帮助你批量查询快递动态,一...
- 从复杂到简单的单号查询,一键清除单号中的符号并批量查快递信息
-
在繁忙的商务与日常生活中,快递查询已成为不可或缺的一环。然而,面对海量的单号,逐一查询不仅耗时费力,还容易出错。现在,有了快递批量查询高手软件,一切变得简单明了。只需一键,即可搞定单号查询,一键处理单...
- 物流单号查询,在哪里查询快递
-
如果在快递单号多的情况,你还在一个个复制粘贴到官网上手动查询,是一件非常麻烦的事情。于是乎今天小编给大家分享一个新的技巧,下面一起来试试。需要哪些工具?安装一个快递批量查询高手快递单号怎么快速查询?...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- wireshark怎么抓包 (75)
- qt sleep (64)
- cs1.6指令代码大全 (55)
- factory-method (60)
- sqlite3_bind_blob (52)
- hibernate update (63)
- c++ base64 (70)
- nc 命令 (52)
- wm_close (51)
- epollin (51)
- sqlca.sqlcode (57)
- lua ipairs (60)
- tv_usec (64)
- 命令行进入文件夹 (53)
- postgresql array (57)
- statfs函数 (57)
- .project文件 (54)
- lua require (56)
- for_each (67)
- c#工厂模式 (57)
- wxsqlite3 (66)
- dmesg -c (58)
- fopen参数 (53)
- tar -zxvf -c (55)
- 速递查询 (52)