linux 误删恢复 linux 数据恢复命令
大家好,关于linux 误删恢复很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于linux 数据恢复命令的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!
Linux 误删文件恢复命令及方法!
无论在哪个系统中,删除文件都需谨慎。一旦不小心删除了重要文件,可能造成重大损失。Linux提供了多种工具和方法,帮助在误删文件后进行恢复。
首先,需要注意的是,虽然有一些软件可以恢复误删的数据,但完全恢复的概率并不是100%。因此,在使用rm命令删除文件时,需格外小心,重要数据应有备份。在恢复已删除的文件前,删除文件的目录内不能新增任何内容,否则已删除的信息将无法找回。
一种常见的恢复方法是使用lsof命令。虽然lsof命令本身并不能直接恢复文件,但它可以列出被各种进程打开的文件信息。通过结合其他命令,可以从/proc目录下的信息中恢复“文件已删除,但进程仍保持打开该文件的状态”的文件。/proc目录是挂载在内存中的一块区域,当我们对这些文件进行读取和写入时,实际上是从内存中获取相关信息。因此,当文件被读取或写入时(即有进程正使用文件时),即使硬盘中的该文件已删除,仍可以从内存中的信息恢复文件。但必须以root用户的权限运行,因为lsof需要访问核心内存和各种文件。此方法只能恢复“文件已删除,但进程仍保持打开该文件的状态”的文件,如果误删了目录,目录中的其他文件未被进程打开,将无法使用此方法恢复。
另一种方法是使用extundelete工具。该工具利用分区日志中的信息,尝试恢复已从ext3或ext4的分区中删除的文件。相比于ext3grep,extundelete的适用范围更广,恢复速度更快。但在数据删除后,要卸载被删除数据所在的磁盘或分区。如果系统根分区遭到误删除,要进入单用户模式,将根分区以只读方式挂载,以避免数据被覆盖。一旦数据被覆盖,就无法找回。虽然恢复仍有一定的机率失败,平时应对重要数据作备份,小心使用rm命令。
安装extundelete工具可以通过依赖安装或编译安装的方法完成。在centos中,可通过执行yum install命令进行安装。在ubuntu中,可以使用apt-get命令进行安装。安装后,执行extundelete命令来恢复文件。在执行恢复文件的命令时,当前目录必须是可写的。执行恢复文件的命令后,会在执行命令的当前目录下生成RECOVERED_FILES目录,恢复的文件都会放入此目录中。如未生成目录,即为失败。
总之,使用多种工具和方法,结合谨慎操作和定期备份,可以有效减少因误删文件造成的损失。不论你是转行、初学还是进阶,学习编程时,可以关注相关学习交流专栏,获取问题答疑、学习交流和技术探讨的资源。
linux误删文件怎么恢复
linux系统是不同于windows系统和mac系统的,它独特的系统操作深受广大网友喜爱。有的朋友在使用linux系统的时候,不小心把一些重要的文件删除了,却不知道应该怎么恢复。那么linux误删命令行文件该怎么恢复呢?接下来小编就给大家带来linux恢复误删文件的教程。
具体方法如下:
1、执行命令“cd/home”进入服务器根目录home。
2、执行命令“touchdemo.txt”创建一个演示文稿。
3、执行命令“rm-rfdemo.txt”删除该文件。
4、执行命令“debugfs”运用系统自带恢复工具debugfs来修复。
5、额外开一个xshell,执行命令“df/home/”打开刚刚被删除文件所在分区。
6、执行命令“open/dev/mapper/vg_root-lv_root”查看目录分区。
7、执行命令“ls-d/home”显示被删除文件所在目录。
8、执行命令“logdump-i”查找文件所在区块号。
9、记住上图block后面的数值并执行命令“quit”退出debugfs。
10、执行命令“ddif=/dev/mapper/vg_root-lv_rootof=/home/demo.txtbs=640count=1skip=1089”恢复文件操作。
11、bs与上图offset值一致,skip与block值一致。
12、执行命令“ls”可以看到文件demo.txt被删除后又重新找回来了,恢复成功。
以上就是linux恢复误删文件的教程,有需要的朋友可以通过上面的步骤进行恢复文件,希望对您有帮助。
如何在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里面。这个目录里的文件就是我们要的东东。