首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
zsh
ftp
linux
压力测试
service
tomcat
运维
stdout
vagrant
fabric
负载均衡
curl
7层
ubuntu
colors
log4j
shell
grafana
k8s
server
devops
路由器
dns
centos
crontab
unix
jenkins
docker
awk
port
tengine
交换机
ssh
touch
4层
apache
centos7
grep
nginx
syslog
cron
服务器
kubectl
debian
sudo
sftp
当前位置:
开发笔记
>
运维
> 正文
浅谈Linux文件系统反删除方法
作者:mobiledu2502923007 | 来源:互联网 | 2017-11-07 08:38
文章标题:浅谈Linux文件系统反删除方法。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类
作为一个多用户、多任务的操作系统,Linux下的文件一旦被删除,是难以恢复的。尽管删除命令只是在档节点中作删除标记,并不真正清除文件内容,但是其它用户和一些有写盘动作的进程会很快覆盖这些资料。不过,对于家庭单机使用的Linux,或者误删档后及时补救,还是可以恢复的。
1、Ext2文件系统结构的简单介绍
在Linux所用的Ext2文件系统中,文件是以块为单位存储的,默认情况下每个块的大小是1K,不同的块以块号区分。每个档还有一个节点,节点中包含有档所有者,读写权限,文件类型等信息。对于一个小于12个块的档,在节点中直接存储档数据块的块号。如果档大于12个块,那么节点在12个块号之后存储一个间接块的块号,在这个间接块号所对应的块中,存储有256个档数据块的块号(Ext2fs中每个块号占用4字节,这样一个块中所能存储的块号就是1024/4=256)。如果有更大的档,那么还会在节点中出现二级间接块和三级间接块。
2、恢复被误删档的方法
大多数Linux发行版都提供一个debugfs工具,可以用来对Ext2文件系统进行编辑操作。不过在使用这个工具之前,还有一些工作要做。
首先以只读方式重新挂载被误删的档所在分区。使用如下命令:(假设文件在/usr分区)
mount ?Cr ?Cn ?Co remount /usr
-r表示只读方式挂载;-n表示不写入/etc/mtab,如果是恢复/etc上的档,就加上这个参数。如果系统说xxx partion busy,可以用fuser命令查看一下是哪些进程使用这个分区上的?n:
fuser ?Cv ?Cm /usr
如果没有什么重要的进程,用以下命令停掉它们:
fuser -k ?Cv ?Cm /usr
然后就可以重新挂载这些文件系统了。
如果是把所有的档统一安装在一个大的/分区当中,可以在boot提示符下用linux single进入单用户模式,尽量减少系统进程向硬盘写入资料的机会,要不干脆把硬盘挂在别的机器上。另外,恢复出来的资料不要写到/上面,避免破坏那些有用的资料。如果机器上有dos/windows,可以写到这些分区上面:
mount ?Cr ?Cn /dev/hda1 /mnt/had
然后就可以执行debugfs:(假设Linux在 /dev/hda5)
#debugfs /dev/hda5
就会出现debugfs提示符debugfs:
使用lsdel命令可以列出很多被删除的文件的信息:
debugfs:lsdel
debugfs: 2692 deleted inodes found.
Inode Owner Mode Size Blocks Time deleted
164821 0 100600 8192 1/ 1 Sun May 13 19:22:46 2001 …………………………………………………………………………………
36137 0 100644 4 1/ 1 Tue Apr 24 10:11:15 2001
196829 0 100644 149500 38/ 38 Mon May 27 13:52:04 2001
debugfs:
列出的档有很多(这里找到2692个),第一字段是档节点号,第二字段是档所有者,第三字段是读写权限,接下来是档大小,占用块数,删除时间。然后就可以根据档大小和删除日期判断那些是我们需要的。比如我们要恢复节点是196829的文件:
可以先看看文件资料状态:
debugfs:stat <196829>
Inode: 196829 Type: regular Mode: 0644 Flags: 0x0 Version: 1
User: 0 Group: 0 Size: 149500
File ACL: 0 Directory ACL: 0
Links: 0 Blockcount: 38
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x31a9a574 -- Mon May 27 13:52:04 2001
atime: 0x31a21dd1 -- Tue May 21 20:47:29 2001
mtime: 0x313bf4d7 -- Tue Mar 5 08:01:27 2001
dtime: 0x31a9a574 -- Mon May 27 13:52:04 2001
BLOCKS:
594810 594811 594814 594815 594816 594817
………………………………….
TOTAL: 38
然后就可以用dump指令恢复文件:
debugfs:dump <196829> /mnt/hda/01.sav
这样就把档恢复出来了。退出debugfs:
debugfs:quit
另一种方法是手工编辑inode:
debugfs:mi <196829>
Mode [0100644]
User ID [0]
Group ID [0]
Size [149500]
Creation time [0x31a9a574]
Modification time [0x31a9a574]
Access time [0x31a21dd1]
Deletion time [0x31a9a574] 0
Link count [0] 1
Block count [38]
File flags [0x0]
Reserved1 [0]
File acl [0]
Directory acl [0]
Fragment address [0]
Fragment number [0]
Fragment size [0]
Direct Block #0 [594810]
…………………………….
Triple Indirect Block [0]
使用mi指令后每次显示一行信息以供编辑,其它行可以直接按回车表示确认,把deletion time改成0(未删除),Link count改成1。改好后退出debugfs:
debugfs:quit
然后用fsck检查/dev/hda5
fsck /dev/hda5
程序会说找到丢失的数据块,放在lost+found里面。这个目录里的文件就是我们要的。
linux
windows
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
ubuntu
Ubuntu系统下的GIF动画录制解决方案
在撰写文章或教程时,GIF动态图能够有效地传达信息。对于Windows用户而言,ScreenToGif是一款非常实用的工具。而在Ubuntu系统中,用户同样拥有多种选择来创建GIF动画,本文将重点介绍两款录屏工具——Byzanz和Peek。 ...
[详细]
蜡笔小新 2024-11-22 13:24:34
ubuntu
华硕TUF B360M-PLUS主板兼容Win7及安装指南
本文详细介绍了如何在华硕TUF B360M-PLUS主板上安装Windows 7操作系统,包括必要的准备工作和具体的操作步骤。 ...
[详细]
蜡笔小新 2024-11-22 18:09:16
service
如何解决RPC服务器无法访问的问题
本文提供了多种有效的方法来解决RPC(远程过程调用)服务器不可用的问题,包括通过修改注册表、使用SC命令以及利用故障恢复控制台等技术手段。 ...
[详细]
蜡笔小新 2024-11-22 16:23:52
service
3DSMAX制作超现实的体育馆模型
这篇教程是向脚本之家的朋友介绍3DSMAX制作超现实的体育馆模型方法,教程制作出来的体育馆模型非常地不错,不过教程有点难度,需要有一定基础的朋友学习,推荐到脚本之家,喜欢的朋友可 ...
[详细]
蜡笔小新 2024-11-22 16:07:10
service
AngularJS中ng-repeat元素的单选功能实现
本文介绍了如何在AngularJS应用中使用ng-repeat指令创建可单独点击选中的列表项,并详细描述了实现这一功能的具体步骤和代码示例。 ...
[详细]
蜡笔小新 2024-11-22 15:56:12
service
冲刺最后一天的任务完成情况
在项目冲刺的最后一天,团队专注于软件用户界面的细节优化,包括调整控件布局和字体设置,以确保界面的简洁性和用户友好性。 ...
[详细]
蜡笔小新 2024-11-22 14:51:19
service
如何在Windows 11中找回动态磁贴功能
本文详细介绍了解决Windows 11用户无法使用动态磁贴的问题,提供了一种通过修改注册表来恢复这一功能的方法,适合需要个性化操作界面的用户参考。 ...
[详细]
蜡笔小新 2024-11-22 14:30:04
service
JavaScript 页面卸载事件详解 (onunload)
当用户从页面离开时(如关闭页面或刷新页面),会触发 onunload 事件,此时可以执行预设的脚本。需要注意的是,不同的浏览器对 onunload 事件的支持程度可能有所不同。 ...
[详细]
蜡笔小新 2024-11-22 14:17:44
service
如何将 Git 提交编辑器从 Nano 更改为 Vim
默认情况下,Git 使用 Nano 编辑器进行提交信息的编辑,但如果您更喜欢使用 Vim,可以通过简单的配置更改来实现这一变化。本文将指导您如何通过修改全局配置文件来设置 Vim 作为默认的 Git 提交编辑器。 ...
[详细]
蜡笔小新 2024-11-22 14:08:35
service
探索Java 11中的ZGC垃圾收集器
Java 11引入了一种新的垃圾收集器——ZGC,由Oracle公司研发,旨在支持TB级别的内存容量,并保证极低的暂停时间。本文将探讨ZGC的开发背景、技术特点及其潜在的应用前景。 ...
[详细]
蜡笔小新 2024-11-22 13:36:53
路由器
吴石访谈:腾讯安全科恩实验室如何引领物联网安全研究
腾讯安全科恩实验室曾两次成功破解特斯拉自动驾驶系统,并远程控制汽车,展示了其在汽车安全领域的强大实力。近日,该实验室负责人吴石接受了InfoQ的专访,详细介绍了团队未来的重点方向——物联网安全。 ...
[详细]
蜡笔小新 2024-11-22 13:27:32
路由器
HDU 6116 路径计数优化
本文探讨了使用普通生成函数和指数生成函数解决组合与排列问题的方法,特别是在处理特定路径计数问题时的应用。文章通过详细分析和代码实现,展示了如何高效地计算在给定条件下不相邻相同元素的排列数量。 ...
[详细]
蜡笔小新 2024-11-22 13:11:20
路由器
在Notepad++中配置Markdown语法高亮及实时预览功能
本文详细介绍了如何在Notepad++中配置Markdown语法高亮和实时预览功能,包括必要的插件安装和设置步骤。 ...
[详细]
蜡笔小新 2024-11-22 13:03:49
server
解决Win10 1709版本文件共享安全警告问题
每当Windows 10发布新版本时,由于兼容性问题往往会出现各种故障。近期,一些用户在升级至1709版本后遇到了无法访问共享文件夹的问题,系统提示‘文件共享不安全,无法连接’。本文将提供多种解决方案,帮助您轻松解决这一难题。 ...
[详细]
蜡笔小新 2024-11-22 13:00:07
docker
为何Compose与Swarm之后仍有Kubernetes的诞生?
探讨在已有Compose和Swarm的情况下,Kubernetes是如何以其独特的设计理念和技术优势脱颖而出,成为容器编排领域的领航者。 ...
[详细]
蜡笔小新 2024-11-22 09:26:11
mobiledu2502923007
这个家伙很懒,什么也没留下!
Tags | 热门标签
zsh
ftp
linux
压力测试
service
tomcat
运维
stdout
vagrant
fabric
负载均衡
curl
7层
ubuntu
colors
log4j
shell
grafana
k8s
server
devops
路由器
dns
centos
crontab
unix
jenkins
docker
awk
port
RankList | 热门文章
1
用Python编写的小数类型判断习题
2
探讨焊接技术的重要性及应用范围
3
wikioi 1683 车厢组合:重构旅行方式
4
RabbitMQ消息中间件快速入门:SpringBoot整合生产者与消费者
5
使用透明背景绘制位图的方法
6
Bash shell脚本练习(第四部分)
7
思维训练课程有哪些? 思维训练题100道
8
python中局部变量和全局变量使用规则_从局部变量和全局变量开始全面解析Python中变量的作用域...
9
深入解析Mysql InnoDb行格式、数据页结构和索引底层原理
10
[刷题] LeetCode 3 Longest Substring Without Repeating Character
11
使用tensorflow进行手写数字分类预测的kaggle实战
12
windows10专业版系统右键打不开显示设置和个性化怎么解决?
13
android 手机短信恢复,Android短信如何恢复
14
Java简易教程:了解Java的基本概述
15
本地和远程Service与Activity之间的通信方式详解(转载)
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有