当前位置: 技术问答>linux和unix
天啊,我把公司服务器(Linux)里的一些文件给误删除了,怎么办!!
来源: 互联网 发布时间:2015-02-03
本文导语: 公司服务器是linux系统,我今天不小心把不少资料、程序(PHP的)给删了,现在才发现其他部门还需要,请问我怎么在linux下恢复啊!大家快帮帮我啊,在线等待!! 哪位兄弟行行好,告诉我方法啊,小弟在此谢过啊...
公司服务器是linux系统,我今天不小心把不少资料、程序(PHP的)给删了,现在才发现其他部门还需要,请问我怎么在linux下恢复啊!大家快帮帮我啊,在线等待!!
哪位兄弟行行好,告诉我方法啊,小弟在此谢过啊!!
哪位兄弟行行好,告诉我方法啊,小弟在此谢过啊!!
|
确信你对文件有修改的权限,如果没有,删除仅仅是表面文章。如果有在linux下(在linux没有重启之前),查看Trash文件夹下有没有你删除的文件。如果没有,在tmp文件夹下看看,如果还没有,俺就over了!
|
删掉文件其实只是将指向数据块的索引点 (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
尤其注意其数据块是否连续!
然后将该索引点所指数据块内的数据抓出并存到另一盘区:
debugfs: dump /dosd/tmp/recovered.001
按该 mini-Howto 的说法,以上方法只使用于大小不超过 12 个 block 的文件,对于超过 12 个 block 的文件,由于 unix 是将数据分段保存的,需要将各段数据分别取出再拼接,所以比较麻烦。但我用 stat 检查的结果,大文件的数据块也都是紧挨着的,并没有被分段, 于是我试着用同样的方法将文件 dump 出来,发觉结果完全正确,对六百多兆的大文件也适用!不知道 linux 就是连续保存文件的,还是因为我的计算机只有我一个用户而使然,反正我用上述简单方法将我误删的绝大部分文件都恢复了。
需要说明的一点是,恢复的文件是没有保留文件名的,需要你查看文件内容后,再重新命名。
靠人不如靠己,当初没有轻易放弃看来是正确的,尽管我有少量备份。不过经过这场"灾难",本人的指法倒是又熟练了不少:几千个文件得一个一个恢复!
我先在网上查有关 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
尤其注意其数据块是否连续!
然后将该索引点所指数据块内的数据抓出并存到另一盘区:
debugfs: dump /dosd/tmp/recovered.001
按该 mini-Howto 的说法,以上方法只使用于大小不超过 12 个 block 的文件,对于超过 12 个 block 的文件,由于 unix 是将数据分段保存的,需要将各段数据分别取出再拼接,所以比较麻烦。但我用 stat 检查的结果,大文件的数据块也都是紧挨着的,并没有被分段, 于是我试着用同样的方法将文件 dump 出来,发觉结果完全正确,对六百多兆的大文件也适用!不知道 linux 就是连续保存文件的,还是因为我的计算机只有我一个用户而使然,反正我用上述简单方法将我误删的绝大部分文件都恢复了。
需要说明的一点是,恢复的文件是没有保留文件名的,需要你查看文件内容后,再重新命名。
靠人不如靠己,当初没有轻易放弃看来是正确的,尽管我有少量备份。不过经过这场"灾难",本人的指法倒是又熟练了不少:几千个文件得一个一个恢复!
|
我想你已经看过这篇文章了
http://bbs.sjtu.edu.cn/cgi-bin/www3/bbsgcon?board=GNULinux&file=G.1029255836.A&num=616
饮水思源 -- 文章阅读 [讨论区: GNULinux]
--------------------------------------------------------------------------------
发信人: ccdcn (祝福受伤的mm), 信区: GNULinux
标 题: Linux文件系统的反删除方法 Altmayer (转寄)(转载)
发信站: 饮水思源 (2002年08月14日00:23:56 星期三), 站内信件
【 以下文字转载自 ccdcn 的信箱 】
【 原文由 Altmayer.bbs@lostemple.dhs.org 所发表 】
来 源: from altmayer.dhs.org ([211.80.41.106])
日 期: Tue Mar 26 00:07:17 2002
www.linuxbyte.net
Linux文件系统的反删除方法
2001-07-25 15:52
发布者:byeyear 阅读次数:16
作为一个多用户、多任务的操作系统,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.
--
※ 转寄:·失落的神殿 lostemple.dhs.org·[FROM: 失落的神殿]
--
※ 转载:·饮水思源 bbs.sjtu.edu.cn·[FROM: 202.120.56.39]
http://bbs.sjtu.edu.cn/cgi-bin/www3/bbsgcon?board=GNULinux&file=G.1029255836.A&num=616
饮水思源 -- 文章阅读 [讨论区: GNULinux]
--------------------------------------------------------------------------------
发信人: ccdcn (祝福受伤的mm), 信区: GNULinux
标 题: Linux文件系统的反删除方法 Altmayer (转寄)(转载)
发信站: 饮水思源 (2002年08月14日00:23:56 星期三), 站内信件
【 以下文字转载自 ccdcn 的信箱 】
【 原文由 Altmayer.bbs@lostemple.dhs.org 所发表 】
来 源: from altmayer.dhs.org ([211.80.41.106])
日 期: Tue Mar 26 00:07:17 2002
www.linuxbyte.net
Linux文件系统的反删除方法
2001-07-25 15:52
发布者:byeyear 阅读次数:16
作为一个多用户、多任务的操作系统,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.
--
※ 转寄:·失落的神殿 lostemple.dhs.org·[FROM: 失落的神殿]
--
※ 转载:·饮水思源 bbs.sjtu.edu.cn·[FROM: 202.120.56.39]
|
Up
惨,惨,惨,Linux的inode一旦被释,放好像是没有办法回复的!
惨,惨,惨,Linux的inode一旦被释,放好像是没有办法回复的!
|
easy.....
软件简介
是威力非常强大的硬盘数据恢复工具。能够帮你恢复丢失的数据以及重建文件系统。EasyRecovery不会向你的原始驱动器写入任何东东,它主要是在内存中重建文件分区表使数据能够安全地传输到其他驱动器中。你可以从被病毒破坏或是已经格式化的硬盘中恢复数据。该软件可以恢复大于8.4GB的硬盘。支持长文件名。 被破坏的硬盘中像丢失的引导记录、BIOS参数数据块;分区表;FAT表;引导区都可以由它来进行恢复。
http://www8.pconline.com.cn/download/swdetail.phtml?id=2446
这招救不了就没救了
软件简介
是威力非常强大的硬盘数据恢复工具。能够帮你恢复丢失的数据以及重建文件系统。EasyRecovery不会向你的原始驱动器写入任何东东,它主要是在内存中重建文件分区表使数据能够安全地传输到其他驱动器中。你可以从被病毒破坏或是已经格式化的硬盘中恢复数据。该软件可以恢复大于8.4GB的硬盘。支持长文件名。 被破坏的硬盘中像丢失的引导记录、BIOS参数数据块;分区表;FAT表;引导区都可以由它来进行恢复。
http://www8.pconline.com.cn/download/swdetail.phtml?id=2446
这招救不了就没救了
|
怎么个删除法?
|
如果你对linux服务器确实有删除权限的话,那没办法了。
不过一般不会有吧?
不过一般不会有吧?
|
楼上的方法看来是不行了。
EasyRecover 数据恢复版本:
1.最新支持Windows2000、WindowsNT、WindowsXP
2.可选择FTP为拷贝的目标
3.数据恢复包括微软Word、Winzip文件的修复
4.可以从CompactFlash卡、SmartMedia卡、记忆棒、移动硬盘以及软盘上恢复数据
5.可成生恢复报告
6.提升了文件搜索功能,支持超过90种的文件类型
7.可根据指定要求进行高级搜索
EasyRecovery 文件修复版:增加了对微软PowerPoint、Outlook、Excel、Access和Word
EasyRecovery 专业版
EasyRecover 数据恢复版本:
1.最新支持Windows2000、WindowsNT、WindowsXP
2.可选择FTP为拷贝的目标
3.数据恢复包括微软Word、Winzip文件的修复
4.可以从CompactFlash卡、SmartMedia卡、记忆棒、移动硬盘以及软盘上恢复数据
5.可成生恢复报告
6.提升了文件搜索功能,支持超过90种的文件类型
7.可根据指定要求进行高级搜索
EasyRecovery 文件修复版:增加了对微软PowerPoint、Outlook、Excel、Access和Word
EasyRecovery 专业版
|
这位兄台是怎么删的
rm -f xx.xx
还是用windows的del(samba 服务器上的文件)
rm -f xx.xx
还是用windows的del(samba 服务器上的文件)
|
LINUX硬盘分区用的什么格式?可以挂到其他机子上用EASYRECOVER 试一下。
|
同意楼上的.
|
最完美的办法,重新做程序拉,还有一次锻炼的机会吗。
|
完了,辞职。
|
gz
|
(我是菜鸟):Windows能远程删除服务器Linux上的文件吗??
|
死活不承认是你删除的.