龙空技术网

系统运维数据存储知识-系统数据误删除恢复

老男孩-赋能IT从业者 191

前言:

此时咱们对“阿里云释放的数据能恢复不”大约比较关心,各位老铁们都需要学习一些“阿里云释放的数据能恢复不”的相关内容。那么小编在网上网罗了一些有关“阿里云释放的数据能恢复不””的相关知识,希望各位老铁们能喜欢,你们一起来学习一下吧!

本文目录

利用 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官方网站地址extundelete程序下载地址最新版本的 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 ;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.txtoldboyedu.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..                                                2lost+found                                        11test                                              393217         Deletedoldboy01.txt                                      12             Deleted

恢复单个目录

# 指定要恢复的目录名,如果是空目录则不会恢复extundelete /dev/vdb1 --restore-directory  test

当执行恢复文件的命令后,会在执行命令的当前的目录下生成RECOVERED_FILES目录,恢复的文件都会放入此目录中。如未生成目录即为失败。 恢复单个文件

# 指定要恢复的文件名,如果几k大小的小文件,有很大几率恢复失败extundelete /dev/vdb1 --restore-file oldboy01.txt

恢复全部删除的文件

# 无需指定文件名或目录名,恢复全部删除的数据extundelete /dev/vdb1 --restore-all

原文链接:

标签: #阿里云释放的数据能恢复不