Linux下恢复rm删除的文件
haoteby 2024-12-07 12:30 10 浏览
导读
在日常的运维工作中,大部分OP都习惯性的经常rm -rf 命令用于文件目录的删除,通过命令“rm -rf”可以将任何数据直接从硬盘删除,并且没有任何提示,同时Linux下也没有与Windows下回收站类似的功能,也就意味着,数据在删除后通过常规的手段是无法恢复的。所以当出现误操作时,很难快速的找回被删除的文件。
数据恢复工作选择
在Linux下,基于开源的数据恢复工具有很多,常见的有debugfs、R-Linux、ext3grep、extundelete等,比较常用的有ext3grep和extundelete,这两个工具的恢复原理基本一样,只是extundelete功能更加强大,本文重点介绍extundelete的使用。
数据恢复原理
首先我们稍微复习一下计算机基础知识:
硬盘
硬盘是一种采用磁介质的数据存储设备,数据『物理意义上的』存储在若干个磁盘片上。在磁盘片的每一面上,以转动轴为轴心、以一定的磁密度为间隔的若干个同心圆就被划分成磁道(track),每个磁道又被划分为若干个扇区(sector)。
主引导扇区和分区表
硬盘的0磁道0柱面1扇区是主引导扇区位,包括硬盘主引导记录MBR(Main Boot Record)和分区表DPT(Disk Partition Table)。操作系统通过分区表把硬盘划分为若干个分区,然后再在每个分区里面创建文件系统,写入数据文件。
分区日志
分区日志系统是一个文件系统,用于修复由于计算机关闭不当而导致的任何不一致。这种关闭通常是由于电源中断或软件问题造成的。即记录了分区的数据读写操作。通过这些日志,可以知道分区中的历史操作。
数据存储
具体的数据存储原理内容比较多,这里不做过多的概述。为了便于理解,可在此理解为:
操作系统中的文件在硬盘的表现形式是在硬盘一片数据区域记录二进制信息,并由操作系统的一个指针指向该物理地址
而操作系统级别的『删除文件』,即删除这个『指针』
原来的物理地址内没有『指针』指向后,相当于被释放,当操作系统需要时,可以被复写上新的数据。
由此得知,extundelete 通过查阅分区日志,找到被删除的指针,告诉用户,可以尝试恢复哪些数据。但由于操作系统随时可以复写空余磁盘,所以如果要恢复的物理地址已经被改写,数据将无法找回。
解决方案演示
演示环境:
操作系统: CentOS 6
需要恢复的文件: /mnt/data1/tmpdir/testDelete/test.log
1.创建文件
2.删除文件
3.安装 extundelete文件恢复工具
执行命令: yum install extundelete -y
4.查询被删除文件所处磁盘
[root@master-worksvr testDelete]# df /mnt/data1/tmpdir/testDelete Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda3 142433064 129081532 6116360 96% /mnt/data1
5.卸载磁盘,保护现场
umount /dev/sda3 备注: 不卸载也可以,这样会导致磁盘可能会被其他的进程写入数据,从而抹掉原来的数据,建议卸载
6.获取磁盘根inode值
磁盘根目录的inode值,一般情况下为2
[root@master-worksvr testDelete]# ls -id / 2 /
7.查询可恢复的数据
extundelete /dev/sda3 --inode 2
从上图可看出tmpdir 的 inode 是 2883585,继续根据tmpdir的inode查询
extundelete /dev/sda3 --inode 2883585
从上图可看出testDelete 的 inode 是 2941415,继续根据testDelete的inode查询
extundelete /dev/sda3 --inode 2941415
最终找到了被删除的文件,也就意味着test.log这个我们之前删除的文件,是可以被恢复出来的。
8.恢复数据
采用extundelete命令恢复数据:
1.恢复单个文件使用参数“--restore-file”,恢复单个目录使用参数“--restore-directory”,需要使用文件的相对路径。
2.文件恢复成功后,在执行extundelete命令的当前目录下会创建一个RECOVERED_FILES目录,用于存放恢复出来的文件。
实际操作:
[root@master-worksvr ~]# extundelete /dev/sda3 --restore-file /tmpdir/testDelete/test.log NOTICE: Extended attributes are not restored. Loading filesystem metadata ... 1104 groups loaded. Loading journal descriptors ... 32255 descriptors loaded. Successfully restored file /tmpdir/testDelete/test.log [root@master-worksvr ~]# cat ./RECOVERED_FILES/tmpdir/testDelete/test.log TestDelteFile [root@master-worksvr ~]# #若文件无法恢复,则会抛出: No files were undeleted.
extundelete还有其他很强大的功能在此就不演示,下面为extundelte命令相关参数的解释,可供参考:
命令格式: extundelete [options] [--] device-file 其中,参数(options)有: --version, -[vV],显示软件版本号。 --help,显示软件帮助信息。 --superblock,显示超级块信息。 --journal,显示日志信息。 --after dtime,时间参数,表示在某段时间之后被删的文件或目录。 --before dtime,时间参数,表示在某段时间之前被删的文件或目录。 动作(action)有: --inode ino,显示节点“ino”的信息。 --block blk,显示数据块“blk”的信息。 --restore-inode ino[,ino,...],恢复命令参数,表示恢复节点“ino”的文件,恢复的文件会自动放在当前目录下的RESTORED_FILES文件夹中,使用节点编号作为扩展名。 --restore-file 'path',恢复命令参数,表示将恢复指定路径的文件,并把恢复的文件放在当前目录下的RECOVERED_FILES目录中。 --restore-files 'path',恢复命令参数,表示将恢复在路径中已列出的所有文件。 --restore-all,恢复命令参数,表示将尝试恢复所有目录和文件。 -j journal,表示从已经命名的文件中读取扩展日志。 -b blocknumber,表示使用之前备份的超级块来打开文件系统,一般用于查看现有超级块是不是当前所要的文件。 -B blocksize,通过指定数据块大小来打开文件系统,一般用于查看已经知道大小的文件。
注意事项
服务器的数据一定要及时备份或做好容灾,防止丢失。希望大家都不要出现这样的悲剧。
若在实际操作过程有相关问题,欢迎和我一起探讨!
相关推荐
- Chrome OS 41 用 Freon 取代 X11_chrome os atom
-
在刚发布的ChromeOS41里,除了常规的Wi-Fi稳定性提升(几乎所有系统的changelog里都会包含这一项)、访客模式壁纸等之外,还存在底层改变。这一更新中Google移除...
- 苹果iPad Pro再曝光 有望今年六月发布
-
自进入2015年以后,有关大屏iPad的消息便一直不绝于耳,之前就有不少媒体猜想这款全新的平板电脑将会在三月发布,不过可惜的是我么只在那次发布会上看到了MacBookPro。近日@Ubuntu团队便...
- 雷卯针对香橙派Orange Pi 5 Max开发板防雷防静电方案
-
一、应用场景高端平板、边缘计算、人工智能、云计算、AR/VR、智能安防、智能家居、Linux桌面计算机、Linux网络服务器、Android平板、Android游戏机...
- Ubuntu Server无法更新问题解决_ubuntu server not found
-
上周老家的一台运行UbuntuServer的盒子无法连接上了,中秋这两天回来打开,顺手更新一下发现更新报错。提示`E:Releasefileforhttps://mirrors.aliyun...
- 虚幻引擎5正式版发布:古墓丽影&巫师新作采用、新一代实时渲染
-
机器之心报道编辑:杜伟、陈萍虚幻引擎5的目标是「助力各种规模的团队在视觉领域和互动领域挑战极限,施展无限潜能」。...
- AMD Milan-X双路霄龙7773X平台基准测试曝光 CPU缓存总量超1.5GB
-
OpenBenchmarking基准测试数据库刚刚曝光了AMDMilan-X双路霄龙7773X平台的跑分成绩,虽然很快就被撤下,但我们还是知晓了高达1.6GB的总CPU缓存。早些时...
- 全网最新的Dify(1.7.2)私有化离线部署教程(ARM架构)
-
Hello,大家好!近期工作中有涉及到Dify私有化离线部署,特别是针对于一些国产设备。因此特别整理了该教程,实测有效!有需要的小伙伴可以参考下!本文主要针对Dify1.7.2最新版本+国产操作系...
- 在ubuntu下新建asp.net core项目_创建ubuntu
-
本文一步步讲述在ubuntu下用visualstudiocode创建asp.netcore项目的过程。step1:环境操作系统:virtualbox下安装的lubuntu。请不要开启“硬件...
-
- 在晶晨A311D2处理器上进行Linux硬件视频编码
-
在KhadasVIM4AmogicA311D2SBC上,我更多的时间是在使用Ubuntu22.04。它的总体性能还不错,只不过缺少3D图形加速和硬件视...
-
2025-08-26 17:22 haoteby
- Nacos3.0重磅来袭!全面拥抱AI,单机及集群模式安装详细教程!
-
之前和大家分享过JDK17的多版本管理及详细安装过程,然后在项目升级完jdk17后又发现之前的注册和配置中心nacos又用不了,原因是之前的nacos1.3版本的,版本太老了,已经无法适配当前新的JD...
- 电影质量级渲染来了!虚幻引擎5.3正式发布:已开放下载
-
快科技9月8日消息,日前,Unrealengine正式发布了虚幻引擎5.3,带来了大量全方位的改进。...
- 2025如何选购办公电脑?极摩客mini主机英特尔系列选购指南
-
当下,迷你主机的性能越来越强,品类也越来越多。但是CPU是不变的,基本都是AMD和英特尔的。有一个小伙伴在评论区提问,我应该如何在众多机器中选购一台符合自己的迷你主机呢?那今天我们优先把我们的系列,分...
- ubuntu 20.04+RTX4060 Ti+CUDA 11.7+cudnn
-
ububtu添加国内源sudocp/etc/apt/sources.list/etc/apt/sources.list.backupsudovim/etc/apt/sources.lis...
- Linux Mint 18将重新基于Ubuntu 16.04 带来更好硬件支持
-
项目负责人ClementLefebvre在本月6日披露了关于LinuxMint18“Sarah”操作系统的大量信息,包括带来全新扁平化体验的Mint-Y主题。而现在,这款将于年底之前上线的操作...