当前位置: 技术问答>linux和unix
不小心把red hat 8下面root目录里面的东西都删除了,有什么办法恢复阿
来源: 互联网 发布时间:2015-09-06
本文导语: 着急啊。 | 似乎是没有办法的,Unix和Linux下面反删除的这类东西好像很少 | 重装,不格式化其他分区,数据还是有的 | 关注 | /root里面是root...
着急啊。
|
似乎是没有办法的,Unix和Linux下面反删除的这类东西好像很少
|
重装,不格式化其他分区,数据还是有的
|
关注
|
/root里面是root用户的信息,好像也不是很多
我用的是csh,/root里面文件最少的时候也就是.cshrc .login还有另外两个文件的样子,Linux缺省用的是bash,应该有个profile的文件,其他的也不是很多
你重新创建一个用户,然后进入那个用户的账户,看看有哪些文件,把这些文件稍微修改一下基本上就可以直接放到/root里面去给root使用了
我用的是csh,/root里面文件最少的时候也就是.cshrc .login还有另外两个文件的样子,Linux缺省用的是bash,应该有个profile的文件,其他的也不是很多
你重新创建一个用户,然后进入那个用户的账户,看看有哪些文件,把这些文件稍微修改一下基本上就可以直接放到/root里面去给root使用了
|
/root里面的东西也没什么大用, 除非是你自已拷了很多东西, 不然没什么大关系, 无非是一些登录脚本之类的.
|
不会影响吧!除非是你私人的东西.
|
试试这个方法,刚才看到的
『前些天被我误删掉的home directory下的几千个文件,经过本人数天的连续奋战,
现绝大部分已恢复,算是奇迹也不是奇迹。
删掉文件其实只是将指向数据块的索引点(information nodes)释放,只要不被覆
盖,数据其实还在硬盘上,关键在于找出索引点,然后将其所指数据块内的数据抓出,
再保存到另外的分区。
我先在网上查有关linux
undelete的信息,找到一个ext2fs-undeletion的mini-Howto,后发觉在RH6.2的
/usr/doc/HOWTO内也有,按它的方法,先将被删掉数据的盘区umount掉(防止写盘覆
盖被删除的数据,显然这一步在误删数据后做得越快越好,尤其是对多人使用的计算
机),然后查文件系统中哪些索引点最近被释放:
#debugfs /dev/hda6 (my 'home' partition)
debugfs: lsdel
即给出相应信息,包括索引点,文件属主,大小,删除日期等。也可将结果输出到
一个文件中
debugfs: quit
# echo lsdel | debugfs /dev/hda6 > lsdel.out
还可用debugfs中stat查看某一索引点的详细信息:
debugfs: stat (148003为索引点)
尤其注意其数据块是否连续!
然后将该索引点所指数据块内的数据抓出并存到另一盘区:
debugfs: dump /dosd/tmp/recovered.001
按该mini-Howto的说法,以上方法只使用于大小不超过12个block的文件,对于
超过12个block的文件,由于unix是将数据分段保存的,需要将各段数据分别取出再
拼接,所以比较麻烦。但我用stat检查的结果,大文件的数据块也都是紧挨着的,
并没有被分段, 于是我试着用同样的方法将文件dump出来,发觉结果完全正确,对
六百多兆的大文件也适用!不知道linux就是连续保存文件的,还是因为我的计算机
只有我一个用户而使然,反正我用上述简单方法将我误删的绝大部分文件都恢复了。
需要说明的一点是,恢复的文件是没有保留文件名的,需要你查看文件内容后,
再重新命名。
靠人不如靠己,当初没有轻易放弃看来是正确的,尽管我有少量备份。不过经过
这场"灾难",本人的指法倒是又熟练了不少:几千个文件得一个一个恢复!』
引自“http://www.linuxforum.net/books/smth/Linux.AIX/00000130/00000004.htm”
『前些天被我误删掉的home directory下的几千个文件,经过本人数天的连续奋战,
现绝大部分已恢复,算是奇迹也不是奇迹。
删掉文件其实只是将指向数据块的索引点(information nodes)释放,只要不被覆
盖,数据其实还在硬盘上,关键在于找出索引点,然后将其所指数据块内的数据抓出,
再保存到另外的分区。
我先在网上查有关linux
undelete的信息,找到一个ext2fs-undeletion的mini-Howto,后发觉在RH6.2的
/usr/doc/HOWTO内也有,按它的方法,先将被删掉数据的盘区umount掉(防止写盘覆
盖被删除的数据,显然这一步在误删数据后做得越快越好,尤其是对多人使用的计算
机),然后查文件系统中哪些索引点最近被释放:
#debugfs /dev/hda6 (my 'home' partition)
debugfs: lsdel
即给出相应信息,包括索引点,文件属主,大小,删除日期等。也可将结果输出到
一个文件中
debugfs: quit
# echo lsdel | debugfs /dev/hda6 > lsdel.out
还可用debugfs中stat查看某一索引点的详细信息:
debugfs: stat (148003为索引点)
尤其注意其数据块是否连续!
然后将该索引点所指数据块内的数据抓出并存到另一盘区:
debugfs: dump /dosd/tmp/recovered.001
按该mini-Howto的说法,以上方法只使用于大小不超过12个block的文件,对于
超过12个block的文件,由于unix是将数据分段保存的,需要将各段数据分别取出再
拼接,所以比较麻烦。但我用stat检查的结果,大文件的数据块也都是紧挨着的,
并没有被分段, 于是我试着用同样的方法将文件dump出来,发觉结果完全正确,对
六百多兆的大文件也适用!不知道linux就是连续保存文件的,还是因为我的计算机
只有我一个用户而使然,反正我用上述简单方法将我误删的绝大部分文件都恢复了。
需要说明的一点是,恢复的文件是没有保留文件名的,需要你查看文件内容后,
再重新命名。
靠人不如靠己,当初没有轻易放弃看来是正确的,尽管我有少量备份。不过经过
这场"灾难",本人的指法倒是又熟练了不少:几千个文件得一个一个恢复!』
引自“http://www.linuxforum.net/books/smth/Linux.AIX/00000130/00000004.htm”
|
这篇比较详细『
作为一个多用户、多任务的操作系统,Linux下的文件一旦被删除,是难以恢复的。尽管删除命令只是在文件节点中作删除标记,并不真正清除文件内容,但是其他用户和一些有写盘动作的进程会很快覆盖这些数据。不过,对于家庭单机使用的Linux,或者误删文件后及时补救,还是可以恢复的。
1.Ext2文件系统结构的简单介绍
在Linux所用的Ext2文件系统中,文件是以块为单位存储的,默认情况下每个块的大小是1K,不同的块以块号区分。每个文件还有一个节点,节点中包含有文件所有者,读写权限,文件类型等信息。对于一个小于12个块的文件,在节点中直接存储文件数据块的块号。如果文件大于12个块,那么节点在12个块号之后存储一个间接块的块号,在这个间接块号所对应的块中,存储有256个文件数据块的块号(Ext2fs中每个块号占用4字节,这样一个块中所能存储的块号就是1024/4=256)。如果有更大的文件,那么还会在节点中出现二级间接块和三级间接块。
2。恢复被误删文件的方法
大多数Linux发行版都提供一个debugfs工具,可以用来对Ext2文件系统进行编辑操作。不过在使用这个工具之前,还有一些工作要做。
首先以只读方式重新挂载被误删的文件所在分区。使用如下命令:(假设文件在/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的文件:
可以先看看文件数据状态:
debugfs:stat
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 /mnt/hda/01.sav
这样就把文件恢复出来了。退出debugfs:
debugfs:quit
另一种方法是手工编辑inode:
debugfs:mi
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里面。这个目录里的文件就是我们要的东东。
Now all O.K. Good Luck.
』
引自“http://www.linuxeden.com/edu/doctext.php?docid=1619”
相信google的力量,and csdner^_^
作为一个多用户、多任务的操作系统,Linux下的文件一旦被删除,是难以恢复的。尽管删除命令只是在文件节点中作删除标记,并不真正清除文件内容,但是其他用户和一些有写盘动作的进程会很快覆盖这些数据。不过,对于家庭单机使用的Linux,或者误删文件后及时补救,还是可以恢复的。
1.Ext2文件系统结构的简单介绍
在Linux所用的Ext2文件系统中,文件是以块为单位存储的,默认情况下每个块的大小是1K,不同的块以块号区分。每个文件还有一个节点,节点中包含有文件所有者,读写权限,文件类型等信息。对于一个小于12个块的文件,在节点中直接存储文件数据块的块号。如果文件大于12个块,那么节点在12个块号之后存储一个间接块的块号,在这个间接块号所对应的块中,存储有256个文件数据块的块号(Ext2fs中每个块号占用4字节,这样一个块中所能存储的块号就是1024/4=256)。如果有更大的文件,那么还会在节点中出现二级间接块和三级间接块。
2。恢复被误删文件的方法
大多数Linux发行版都提供一个debugfs工具,可以用来对Ext2文件系统进行编辑操作。不过在使用这个工具之前,还有一些工作要做。
首先以只读方式重新挂载被误删的文件所在分区。使用如下命令:(假设文件在/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的文件:
可以先看看文件数据状态:
debugfs:stat
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 /mnt/hda/01.sav
这样就把文件恢复出来了。退出debugfs:
debugfs:quit
另一种方法是手工编辑inode:
debugfs:mi
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里面。这个目录里的文件就是我们要的东东。
Now all O.K. Good Luck.
』
引自“http://www.linuxeden.com/edu/doctext.php?docid=1619”
相信google的力量,and csdner^_^
|
http://www.myung.net.cn/
韩新科技是由韩国Myung Information Technologies Co.,Ltd和新加坡伟特国际贸易有限公司合资成立于2001年,是以电脑存储媒体的数据恢复及维修为主营业务的一家科技型企业。
公司引进韩国、新加坡最尖端的计算机数据恢复技术,开展数据恢复服务,以及计算机维修保养工作,在计算机数据恢复领域的专业技术达到国际先进水平,在客户中享有较高的商业信誉。
韩国Myung Information Technologies Co.,Ltd成立于1990年6月。是一家专业从事电脑存储媒体的相关业务的高科技集团企业,其在韩国有8家子公司,有韩国境内唯一的Cleanroom(温度20度,湿度40+/- 5%的作业环境)的实险室,在韩国清洲科技园内有2000平方米的科研中心, 目前占韩国数据恢复市场70%的份额,其数据恢复的技术在国际上也是顶尖的,其业务遍布4大洲9个国家。
新加坡的伟特国际贸易有限公司成立于1989年1月,是一家专业从事电脑存储媒体研发及贸易的一家跨国公司,并有多家在华投资公司。
韩新科技是由韩国Myung Information Technologies Co.,Ltd和新加坡伟特国际贸易有限公司合资成立于2001年,是以电脑存储媒体的数据恢复及维修为主营业务的一家科技型企业。
公司引进韩国、新加坡最尖端的计算机数据恢复技术,开展数据恢复服务,以及计算机维修保养工作,在计算机数据恢复领域的专业技术达到国际先进水平,在客户中享有较高的商业信誉。
韩国Myung Information Technologies Co.,Ltd成立于1990年6月。是一家专业从事电脑存储媒体的相关业务的高科技集团企业,其在韩国有8家子公司,有韩国境内唯一的Cleanroom(温度20度,湿度40+/- 5%的作业环境)的实险室,在韩国清洲科技园内有2000平方米的科研中心, 目前占韩国数据恢复市场70%的份额,其数据恢复的技术在国际上也是顶尖的,其业务遍布4大洲9个国家。
新加坡的伟特国际贸易有限公司成立于1989年1月,是一家专业从事电脑存储媒体研发及贸易的一家跨国公司,并有多家在华投资公司。