入门版Linux上恢复误删除的文件

一、被删除的文件正在被进程使用:

当某个文件正在被某个程序使用时,linux针对该文件有回两个计数器:

i_count计数器:该文件可能被多个进程使用,每一个进程使用该文件,i_count数值都会加1。反之,进程释放该文件的引用,则该计数器减1。

i_nlink计数器:记录该文件产生的硬链接的次数。

一般是有活动的进程存在持续标准输入或输出,到时文件被删除后,进程PID依旧存在。这也是有些服务器删除一些文件但是磁盘不释放的原因。

另外一种情况就是当以上两个计数器都为0的时候,该文件实际上就是属于没有进程使用它的状态,就直接被删除掉了。如果有进程使用它,那么该文件的i_count数值不为0,就可以在/proc/<进程id>/fd目录种找回来。

1、实验准备:

终端1创建一个文件lyg.txt:

终端2另外一个终端一直tail -f(注意这个地方使用tailf不可行)这个文件,达到文件一直被tail进程占用的目的:

终端1上删除此lyg.txt文件:

2、恢复测试:

使用lsof命令查看已经被删除的文件:

在上面lsof返回结果中可以识别出到lyg.txt (deleted)被删除了,这时还存在一个进程tail占用它,tail进程的进程编号是4372,我们按照返回的结果拼接已删除的文件残留的路径为/proc/4372/fd下。

恢复,即使用cp命令,将我们识别到的3拷贝到原目录:

二、被删除的文件没有进程使用,使用extundelete、testdisk等三方工具恢复数据

此时没有进程使用被删除的文件,被删除的文件的两个计数器i_count和i_link此时都为0。其实文件删除可以分为以下情况:

操作系统文件删除:操作系统层面的删除文件,只是删除文件的inode信息。删除inode信息之后,该文件对于操作系统及操作系统的用户不可见了。

磁盘文件物理删除:我们知道物理磁盘是由一个个数据块组成的,所以如果想恢复文件,我们需要找到存放文件的数据块block单元,真正在磁盘上存储文件的block暂时并未被删除(暂时并未被覆盖掉)。

1、所以当文件被误删除了,请立即采集以下基础操作:

①为了防止inode被覆盖掉,一定要停止对当前分区做任何操作,例如可以卸载分区umount /dev/sda3,卸载不掉请看这个umount报错设备繁忙(device is busy)怎么处理?_承缘丶的博客-CSDN博客_umount 设备忙

②看情况停止所在分区的服务,甚至卸载其目录所在的运行设备等。

③看情况为了保险可以通过dd命令对其分区进行备份,防止数据丢失,再加一层保护:

dd if=/pldpath/filename of=/dev/sda4

2、三方工具推荐:

①适用于FAT16、 FAT32、 exFAT (FAT64)、 NTFS、ext2/3/4、xfs等的工具“testdisk”。

yum install testdisk

②支持ext3、ext4等的工具“extundelete”。

yum -y install epel-release

yum -y install extundelete

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 对于误删除文件恢复,可以使用一些工具来进行恢复,比如说TestDisk、PhotoRec等等。这些工具可以扫描硬盘并找回被删除文件,但是需要注意的是,如果文件被覆盖或者硬盘已经受损,那么恢复的成功率会降低。 ### 回答2: 在Linux系统中,当文件误删除时,我们有几种方法可以尝试恢复文件。 首先,我们可以使用一些命令行工具来恢复误删除文件。比如使用“find”命令可以搜索整个文件系统,找到被删除文件的副本。命令如下: ``` $ find / -name "filename" ``` 这将在整个文件系统中搜索名为“filename”的文件,并显示它们的位置。然后可以将文件移动回原来的位置。 第二种方法是使用“grep”命令。它可以在磁盘上搜索二进制数据,找到被删除文件的内容并使用其内容重建文件。命令如下: ``` $ grep -a -B100 -A100 'text in the file' /dev/sda1 > recovered_file ``` 这个命令将在磁盘设备/sda1上搜索包含“file”中内容的二进制数据,并将结果保存到一个名为“recovered_file”的文件中。 第三种方法是使用专业的数据恢复工具。有许多第三方软件可以帮助我们恢复误删除文件,例如TestDisk、PhotoRec等。这些工具通常具有更复杂的功能,可以深入扫描磁盘,寻找被删除文件的各个部分,并尝试将它们重新组装起来。 尽管使用这些方法可以恢复误删除文件,但是成功率并不是百分之百,因为文件删除后,其数据可能已经被覆盖或者损坏。因此,在误删除文件后,应尽快采取措施来尝试恢复文件,以提高成功的机会。此外,为了避免类似问题的发生,我们应该定期备份重要文件,并小心操作。 ### 回答3: 在Linux系统中,当我们误删除文件时,通常可以采取以下方法进行恢复: 1. 使用回收站:某些文件管理器在删除文件时会将其移动到回收站而不是直接永久删除。可以尝试在文件管理器的回收站或垃圾桶中查找并恢复误删除文件。 2. 使用undelete命令:在终端中,可以尝试使用undelete命令来恢复误删除文件。通过在终端输入该命令并指定所需恢复文件路径,系统将尝试从硬盘上恢复删除文件。 3. 使用恢复工具:还可以使用一些专门的恢复工具来恢复误删除文件。例如,extundelete和testdisk是两个常用的Linux文件恢复工具。这些工具可以扫描硬盘并尝试恢复删除文件。 需要注意的是,无论使用哪种方法,都应尽可能在误删除后尽早采取恢复措施。一旦新的文件被写入硬盘上原文件所在的空间,恢复工作就会变得更加困难或者不可能。因此,当发现误删除文件后,尽量避免继续使用该硬盘,以最大限度地提高文件恢复成功率。 此外,为了避免误删除文件,建议定期备份重要的文件。备份可以帮助我们恢复文件,即使出现误操作或其他问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值