如何在Linux系统中恢复误删除的文件

如题所述

作为一个多用户、多任务的操作系统,Linux下的文件一旦被删除,是难以恢复的。尽管删除命令只是在文件节点中作删除标记,并不真正清除文件内容,但是其他用户和一些有写盘动作的进程会很快覆盖这些数据。不过,对于家庭单机使用的Linux,或者误删文件后及时补救,还是可以回复的1、Ext2文件系统结构的简单介绍在Linux所用的Ext2文件系统中,文件是以块为单位存储的,默认情况下每个块的大小是1K,不同的块以块号区分。每个文件还有一个节点,节点中包含有文件所有者,读写权限,文件类型等信息。对于一个小于12个块的文件,在节点中直接存储文件数据块的块号。如果文件大于12个块,那么节点在12个块号之后存储一个间接块的块号,在这个间接块号所对应的块中,存储有256个文件数据块的块号(Ext2fs中每个块号占用4字节,这样一个块中所能存储的块号就是1024/4=256)。如果有更大的文件,那么还会在节点中出现二级间接块和三级间接块。2、恢复被误删文件的方法大多数Linux发行版都提供一个debugfs工具,可以用来对Ext2文件系统进行编辑操作。不过在使用这个工具之前,还有一些工作要做。首先以只读方式重新挂载被误删的文件所在分区。使用如下命令:(假设文件在/usr分区)mount–r–n–oremount/usr-r表示只读方式挂载;-n表示不写入/etc/mtab,如果是恢复/etc上的文件,就加上这个参数。如果系统说xxxpartionbusy,可以用fuser命令查看一下是哪些进程使用这个分区上的文件:fuser–v–m/usr如果没有什么重要的进程,用以下命令停掉它们:fuser-k–v–m/usr然后就可以重新挂载这些文件系统了。如果是把所有的文件统一安装在一个大的/分区当中,可以在boot提示符下用linuxsingle进入单用户模式,尽量减少系统进程向硬盘写入数据的机会,要不干脆把硬盘挂在别的机器上。另外,恢复出来的数据不要写到/上面,避免破坏那些有用的数据。如果机器上有dos/windows,可以写到这些分区上面:mount–r–n/dev/hda1/mnt/had然后就可以执行debugfs:(假设Linux在/dev/hda5)#debugfs/dev/hda5就会出现debugfs提示符debugfs:使用lsdel命令可以列出很多被删除的文件的信息:debugfs:lsdeldebugfs:2692deletedinodesfound.InodeOwnerModeSizeBlocksTimedeleted164821010060081921/1SunMay1319:22:462001…………………………………………………………………………………36137010064441/1TueApr2410:11:152001196829010064414950038/38MonMay2713:52:042001debugfs:列出的文件有很多(这里找到2692个),第一字段是文件节点号,第二字段是文件所有者,第三字段是读写权限,接下来是文件大小,占用块数,删除时间。然后就可以根据文件大小和删除日期判断那些是我们需要的。比如我们要恢复节点是196829的文件:可以先看看文件数据状态:debugfs:statInode:196829Type:regularMode:0644Flags:0x0Version:1User:0Group:0Size:149500FileACL:0DirectoryACL:0Links:0Blockcount:38Fragment:Address:0Number:0Size:0ctime:0x31a9a574--MonMay2713:52:042001atime:0x31a21dd1--TueMay2120:47:292001mtime:0x313bf4d7--TueMar508:01:272001dtime:0x31a9a574--MonMay2713:52:042001BLOCKS:594810594811594814594815594816594817………………………………….TOTAL:38然后就可以用dump指令恢复文件:debugfs:dump/mnt/hda/01.sav这样就把文件恢复出来了。退出debugfs:debugfs:quit另一种方法是手工编辑inode:debugfs:miMode[0100644]UserID[0]GroupID[0]Size[149500]Creationtime[0x31a9a574]Modificationtime[0x31a9a574]Accesstime[0x31a21dd1]Deletiontime[0x31a9a574]0Linkcount[0]1Blockcount[38]Fileflags[0x0]Reserved1[0]Fileacl[0]Directoryacl[0]Fragmentaddress[0]Fragmentnumber[0]Fragmentsize[0]DirectBlock#0[594810]…………………………….TripleIndirectBlock[0]使用mi指令后每次显示一行信息以供编辑,其它行可以直接按回车表示确认,把deletiontime改成0(未删除),Linkcount改成1。改好后退出debugfs:debugfs:quit然后用fsck检查/dev/hda5fsck/dev/hda5程序会说找到丢失的数据块,放在lost+found里面。这个目录里的文件就是我们要的东东。
温馨提示:内容为网友见解,仅供参考
第1个回答  2018-12-27

不小心删除的文件应该怎么恢复呢?今天我们一起来看一下

linux如何恢复删除的文件
1、在命令框中找到已删除文件路径。2、输入df+文件路径命令查看一下路径的分区所在。3、利用系统自带的还原工具debugfs来修复,并分别运行open\/dev\/vdal、Ls\/mnt\/Summer Tes t两个命令,回车后即可找到删掉的文件。4、输入logdump –i+ 5、输入dd if=\/dev\/vda1 of=\/mnt\/Summer_Test\/China.png bs...

linux找回删除文件
1、”进入服务器根目录home;2、输入debugfs运用系统自带恢复工具debugfs来修复;3、执行命令“ls -d \/home”显示被删除文件所在目录;4、执行命令“logdump -i 5、记住上图block后面的数值并执行命令“quit”退出debugfs;6、执行命令“dd if=\/dev\/mapper\/vg_root-lv_root of=\/home\/demo.txt bs=...

linux误删文件怎么恢复
具体方法如下:1、执行命令“cd\/home”进入服务器根目录home。2、执行命令“touchdemo.txt”创建一个演示文稿。3、执行命令“rm-rfdemo.txt”删除该文件。4、执行命令“debugfs”运用系统自带恢复工具debugfs来修复。5、额外开一个xshell,执行命令“df\/home\/”打开刚刚被删除文件所在分区。6、执行命令...

Linux文件误删除恢复方法
进行对丢失的文件进行搜索并进行还原 5.编译安装.\/configure--help 源码包解压 相应的命令进行对源码文件配置属性,.\/configureorcmake Make编译 Makeinstall(编译安装)实例操作: 1.在\/root\/test分区创建一个测试目录test_dir,放置文件 2.删除测试目录,rm-rftest_dir 3.备份\/root\/test分区,ddif=\/...

Linux文件误删后如何恢复
[root@localhost data]# ext3grep \/data\/data-disk --restore-all \/\/恢复的动作,全部恢复。[root@localhostdata]# ls data-disk data-disk.ext3grep.stage1 data-disk.ext3grep.stage2 RESTORED_FILES [root@localhost data]# ll RESTORED_FILES\/ \/\/所有恢复的文件全在这个文件夹...

如何恢复被删除的LINUX文件
要在Linux系统中恢复被删除的文件,请按照以下步骤操作:1. 首先,打开终端并导航到包含被删除文件的文件夹。2. 接下来,您需要将包含这些文件的文件系统挂载为只读模式。这可以通过运行以下命令实现:`mount -o ro \/dev\/sdXY \/mnt\/point`,其中`\/dev\/sdXY`是包含文件的磁盘分区,`\/mnt\/point`是...

linux上恢复误删(使用rm-rf命令)的文件或目录
在Linux系统中,误用"rm -rf"命令删除文件或目录后,恢复文件的步骤取决于进程状态。以下是两种常见情况的处理方法:一、进程仍在使用被删文件 1. 如果文件被删除时,有进程持续访问,可以通过`lsof`命令检查该文件是否还在被进程占用。2. 如果进程还在,进入该进程的目录(\/proc\/pid\/fd\/),执行`cp`...

linux删除文件怎么找回
1、桌面环境提供了回收站功能,当删除文件时,会被移动到回收站而不是永久删除。可以打开回收站应用程序,浏览已删除的文件列表,选择要恢复的文件,右键单击并选择“恢复”选项。文件将被还原到其原始位置。2、没有回收站功能或者在命令行中删除了文件,可以使用一些命令行工具来恢复误删的文件。

如何恢复被删除的LINUX文件
1、打开文件所在的文件夹,将要找回的文件所在的分区重新挂载成只读;2、点击文件夹左下方的“更改bashrc环境”选项,进入后将bashrc环境改为可恢复;3、然后将整个文件夹压缩为一个压缩包;4、将压缩通过系统解压软件重新打开,即可找到删除的LINUX文件的压缩包;5、对LINUX文件压缩包通过系统解压软件解压...

如何在Linux系统中恢复误删除的文件
恢复数据——卸载设备(防止数据被写入)这里出现个小问题,设备繁忙无法卸载,可通过fuser命令解决。再次尝试卸载设备即可成功。恢复数据——使用inode方式 查看被删文件inode号。根据inode号对指定文件进行恢复。验证恢复文件和原始文件的一致性。md5值完全一致,恢复成功。恢复数据——再试试文件名方式,再次...

相似回答