误删数据恢复系列1

简介: 误删数据恢复系列1

数据误删一般有两种场景,一是从数据盘直接删除,二是从数据库删除。今天主要介绍场景1数据盘数据误删

常见情况下来说呢,数据盘数据误删主要有两种场景:

场景一 :在执行rm -rf 删除文件时,该文件正在被进程使用。

场景二:这个文件没有被进程占用,从而被误删除。

所以理论上可以通过block块找回数据,因为上面保存着真实的数据。

风险:如果有进程在在不断地往磁盘写数据时,需要申请新的block块,如果操作系统分配已删除的block块时,新写入的数据就会覆盖原来的数据,此时就会造成数据真正丢失。

在这种情况下,应该第一时间umount目录所在的磁盘,或者不对磁盘进行任何写入,以保证理论数据还存在磁盘上,那么还可以通过相关分析找回数据。

针对场景一 搭建测试环境:

# 创建测试文件夹

mkdir /tmp/test

# 创建测试文件

echo "aaa.al" > /tmp/test/aaa.txt

tail -f /tmp/test/aaa.txt

此时,新开一个终端二,删除aaa.txt文件。

rm -rf /tmp/test/aaa.txt

此时的状态为终端一仍在占用进程,终端二中把文件删除掉了。

场景一恢复:

下面执行恢复操作,使用lsof命令:

# lsof | grep 删除的文件名,如:

lsof | grep aaa.txt

可以看到查询出来的结果处于“deleted”的状态,我需要找到此进程的pid,比如我这里的结果pid为9403。

根据pid号查找文件句柄:

# cd /proc/记录的pid号/fd,如:

cd /proc/1364000/fd

ll

恢复文件,执行以下命令,可以看到数据已经恢复回来了。

cp 3 /tmp/test/aaa.txt.bak

cat /tmp/test/aaa.txt.bak

4、场景二演示

场景二搭建:

我们这里使用单独的一块硬盘来做演示,我这里的硬盘是/sdb1,格式为ext4。

我这里在挂载的目录创建aaa.txt,写入内容和aaa的文件夹。

echo "aaa.al" > /test/aaa.txt

mkdir -p  /test/aaa

cd /test

ls

然后对硬盘内容删除:

cd /test

rm -rf *

ls

场景二恢复:

恢复前需要对硬盘进行取消挂载:

umount /test -l

# 创建一个用于恢复数据的目录

mkdir /tmp/test

cd /tmp/test

执行extundelete命令,如果没有此命令,可以直接安装:

yum -y install epel-release

yum -y install extundelete

完成后,执行命令,可以看到最后显示出误删除的文件,状态为Deleted。

开始恢复文件,找到我们需要恢复文件的Inode number,比如我这里图示为12,则执行以下命令,执行后,会在当前目录下生成RECOVERED_FILES目录,里面包含我们恢复的文件:

同样还可以恢复文件夹和所有文件,命令格式如下:

1)通过inode号(extundelete /dev/sdb1 --restore-inode InodeNum)

2)通过file文件名(extundelete /dev/sdb1 --restore-file FileName)

3)通过directory目录名(extundelete /dev/sdb1 --restore-directory DirectoryName)

4)all全部恢复(extundelete /dev/sdb1 --restore-all)

同样的xfs格式可以使用xfs_undelete工具修复

下载地址https://github.com/ianka/xfs_undelete

tcllib下载地址:https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/t/tcllib-1.14-1.el7.noarch.rpm

xfs文件系统删除恢复

查看文件系统格式

df -h

cd /data                                                            

ls -l    

ls -l ahi-python

find ./ -name *.gz|xargs ls -l

rm -rf /data/*  

发现误删除文件后,立马把误删除文件所在的分区设置成只读状态,或者卸载掉该分区,让分区没有写操作

umount /data/            

使用xfs_undelete工具修复

误删文件所在的文件系统格式是xfs,所以选择了xfs_undelete工具进行修复

https://github.com/ianka/xfs_undelete

tcllib下载地址:

https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/t/tcllib-1.14-1.el7.noarch.rpm

源码安装tcllib

# tar -xf pgs.tar.gz                                                  

# cd pgs/ # tar -xf tcl8.6.11-src.tar.gz                              

# cd tcl8.6.11/unix/                                                  

# ./configure && make && make install  

# cd /opt/pgs/                                                      

# ls -l      

执行xfs_undelete工具找回误删的文件

# unzip xfs_undelete-master.zip                                    

# cd xfs_undelete-master                                            

# ls -l

存放在目录下./xfs_undeleted,文件和之前的有差异,根据文件比对找到对应的数据,主要恢复sh、py和zip文件

# find ./ -name *.gz|xargs ls -l          

# tar -tf ./2021-02-24-21-00_423425453.tar.gz|head -n 10    

使用testdisk工具找回文件

这个工具使用比较简单,无需源码编译,解压即可使用

https://www.cgsecurity.org/wiki/TestDisk

photorec找回文件

# tar -xf testdisk-7.2-WIP.linux26-x86_64.tar.bz2                  

# cd testdisk-7.2-WIP                                              

# ]# mkdir data_recovery                                            

# ./photorec_static                                                

选择/dev/mapper/centos-data逻辑分区 ,Proceed继续

选择XFS分区,file opt可以选择修复的文件类型,如txt压缩等等,最后选择search继续

选择other文件系统,enter继续

选择要恢复文件所要存放的路径

开始恢复文件

相关文章
|
存储 网络协议 安全
使用 NetCat 工具实现远程文件传输
NetCat(NC)是一个通过 TCP/UDP 在网络中进行读写数据工具,主要用于调式领域,传输领域甚至黑客攻击领域。利用 NetCat 工具,可以将网络中的完整数据发送至另一台主机终端显示或存储,常见的应用为文件传输、与好友即时通信、传输流媒体等功能。
961 0
使用 NetCat 工具实现远程文件传输
|
3月前
|
JSON Go PHP
告别阻塞!用 PHP TrueAsync 实现 PHP 脚本提速 10 倍
本文介绍如何用 PHP TrueAsync 构建高性能进程池:基于 `proc_open` 与 NDJSON 协议实现非阻塞进程通信,结合 Channel 任务分发、TaskGroup 协程管理及 Supervisor 自愈机制,让同步 PHP 函数在协程中高效并行,轻松提速 10 倍。
205 19
|
算法 安全 固态存储
删除的文件怎么找回?删除文件恢复全面指南
我们常常在日常生活或工作中不小心删除了重要文件,这样的情况可能瞬间让人感到无助。不过,数据恢复技术已相当成熟,我们可以通过多种方法来找回误删的文件。下面我们将从简单到复杂逐步讲解找回删除文件的方法,希望可以帮助大家在意外发生时及时找回丢失的文件。
|
9月前
|
存储 弹性计算 固态存储
阿里云服务器云盘解析:ESSD AutoPL、ESSD云盘、PL-X等云盘性能与选购参考
对于初次接触阿里云服务器的用户来说,面对众多可选的云盘类型,如ESSD AutoPL、高效云盘、ESSD云盘、SSD云盘等,可能不是很清楚他们之间的区别以及如何选择。这些云盘在最大IOPS、最大吞吐量等性能指标上各有千秋,如何根据自身需求选择适合自己的云盘类型,是用户比较关心的问题。本文将为大家介绍这些云盘的区别,助您轻松找到最适合自己的阿里云云盘。
|
设计模式 Java Linux
Linux的20个常用命令
Linux的23个常用命令
Linux的20个常用命令
|
SQL 关系型数据库 MySQL
mysql数据误删后的数据回滚
【11月更文挑战第1天】本文介绍了四种恢复误删数据的方法:1. 使用事务回滚,通过 `pymysql` 库在 Python 中实现;2. 使用备份恢复,通过 `mysqldump` 命令备份和恢复数据;3. 使用二进制日志恢复,通过 `mysqlbinlog` 工具恢复特定位置的事件;4. 使用延迟复制从副本恢复,通过停止和重启从库复制来恢复数据。每种方法都有详细的步骤和示例代码。
1949 2
|
Linux Shell 网络安全
在Linux中,rsync同步时,如何删除目标数据多出来的数据,即源上不存在,但目标却存在的文件或者目录?
在Linux中,rsync同步时,如何删除目标数据多出来的数据,即源上不存在,但目标却存在的文件或者目录?
|
编解码 vr&ar 内存技术
FFmpeg常用命令讲解及实战二(1)
FFmpeg常用命令讲解及实战二
717 0
|
存储 弹性计算
误删除ecs系统盘和数据盘恢复
误删除ecs系统盘和数据盘恢复
718 1