免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: jacson007
打印 上一主题 下一主题

高手救命啊,误删/usr目录,欢迎各位的高见 [复制链接]

论坛徽章:
0
51 [报告]
发表于 2009-03-05 21:38 |只看该作者

回复 #1 jacson007 的帖子

ext3可以恢复一下系统的
1、Ext3文件系统结构的简单介绍


在Linux所用的Ext3文件系统中,文件是以块为单位存储的,默认情况下每个块的大小是1K,不同的块以块号区分。每个文件还有一个节点,节点中包含有文件所有者,读写权限,文件类型等信息。对于一个小于12个块的文件,在节点中直接存储文件数据块的块号。如果文件大于12个块,那么节点在12个块号之后存储一个间接块的块号,在这个间接块号所对应的块中,存储有256个文件数据块的块号(Ext2fs中每个块号占用4字节,这样一个块中所能存储的块号就是1024/4=256)。如果有更大的文件,那么还会在节点中出现二级间接块和三级间接块。


2、恢复被误删文件的方法


大多数Linux发行版都提供一个debugfs工具,可以用来对Ext3文件系统进行编辑操作。不过在使用这个工具之前,还有一些工作要做。

首先以只读方式重新挂载被误删的文件所在分区。使用如下命令:(假设文件在/usr分区)

mount -r -n -o remount /usr

-r表示只读方式挂载;-n表示不写入/etc/mtab,如果是恢复/etc上的文件,就加上这个参数。如果系统说xxx partion busy,可以用fuser命令查看一下是哪些进程使用这个分区上的文件:

fuser -v -m /usr

如果没有什么重要的进程,用以下命令停掉它们:

fuser -k -v -m /usr

然后就可以重新挂载这些文件系统了。

如果是把所有的文件统一安装在一个大的/分区当中,可以在boot提示符下用 linux single进入单用户模式,尽量减少系统进程向硬盘写入数据的机会,要不干脆把硬盘挂在别的机器上。另外,恢复出来的数据不要写到/上面,避免破坏那些有用的数据。如果机器上有dos/windows,可以写到这些分区上面:

mount -r -n /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的文件:

评分

参与人数 1可用积分 +6 收起 理由
chenyx + 6 我很赞同

查看全部评分

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
52 [报告]
发表于 2009-03-05 21:50 |只看该作者
原帖由 kns1024wh 于 2009-3-5 21:38 发表
ext3可以恢复一下系统的
1、Ext3文件系统结构的简单介绍


在Linux所用的Ext3文件系统中,文件是以块为单位存储的,默认情况下每个块的大小是1K,不同的块以块号区分。每个文件还有一个节点,节点中包含有 ...

这个不错,收下

论坛徽章:
0
53 [报告]
发表于 2009-03-06 09:17 |只看该作者
希望楼主在搞定后发表一下你的方法。

论坛徽章:
0
54 [报告]
发表于 2009-03-06 15:42 |只看该作者
通过/usr copy的方法是不可行,第一无法保证文件的一致性,同时大部分的命令都在/usr下面,即使在/sbin下面的由于没有/usr/lib的支持那么也只能在光盘但用户模式下,通过扩展硬件去copy。我从来没有看到有过详细的技术文档来保证这种方法的正确性。
其实通过相同的光盘来fix或者update一下你的系统是最好的办法,能保证你的数据不丢,同时也能保证/usr的完整性,唯一的问题在于安装在/usr目录下面的第三方产品会有问题,这样还是比较容易接受的结果。

论坛徽章:
0
55 [报告]
发表于 2009-03-06 17:11 |只看该作者
不要随便使用root账号登陆啊,哎

论坛徽章:
0
56 [报告]
发表于 2009-03-06 17:54 |只看该作者

回复 #1 jacson007 的帖子

下个busybox的代码,  那些命令都可以从新编译出来

论坛徽章:
0
57 [报告]
发表于 2009-03-07 00:50 |只看该作者
原帖由 zhumao 于 2009-3-5 16:03 发表
mount -t nfs 1.1.1.1:/usr /tmp/usr


这个不行,提示server is down!

[ 本帖最后由 jacson007 于 2009-3-13 03:15 编辑 ]

论坛徽章:
0
58 [报告]
发表于 2009-03-07 00:54 |只看该作者

回复 #55 phoenix_yu 的帖子

gcc都不能用了,还可以编译出来?

论坛徽章:
0
59 [报告]
发表于 2009-03-07 01:05 |只看该作者

回复 #30 jerryjzm 的帖子

确认了,已经彻底删除了

论坛徽章:
0
60 [报告]
发表于 2009-03-07 01:53 |只看该作者
原帖由 likuku 于 2009-3-5 18:08 发表
傻乎乎的,为何要用与系统目录一样的名字?!


备份数据压缩包在/usr子目录下,解压出来第一层就是usr
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP