首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

linux查找被删除的文件

在Linux系统中,当一个文件被删除时,其实该文件的数据并没有立即从磁盘上消失,而是文件的链接计数减为0,系统才会真正释放该文件所占用的磁盘空间。因此,在文件刚被删除后的一段时间内,我们仍然有可能通过特定的方法找回这些“已删除”的文件。

基础概念

  1. inode(索引节点):Linux文件系统中,每个文件都有一个对应的inode,它存储了文件的元数据,包括文件大小、权限、创建时间等信息,以及指向文件数据块的指针。
  2. 链接计数:每个inode都有一个链接计数器,记录指向该inode的硬链接数量。当文件被删除时,其链接计数减1,当计数为0时,系统释放文件数据块。

查找被删除的文件

要查找被删除但仍被进程占用的文件,可以使用lsof命令。lsof(List Open Files)是一个列出当前系统打开文件的工具,它能够列出系统打开的所有文件,包括被删除但仍被进程占用的文件。

使用lsof命令

代码语言:txt
复制
lsof | grep deleted

这条命令会列出所有被标记为“deleted”的文件,这些文件虽然已经被删除,但因为仍有进程在使用它们,所以它们的数据仍然保留在磁盘上。

示例输出

代码语言:txt
复制
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
python  12345 user   4r   REG  253,0    102400 123456 /var/tmp/file.txt (deleted)

在这个例子中,file.txt文件虽然已经被删除,但进程ID为12345的Python进程仍然在使用它。

恢复被删除的文件

如果确认需要恢复某个被删除的文件,可以采取以下步骤:

  1. 确认文件仍在使用:确保文件仍然被某个进程占用,否则文件数据可能已经被覆盖。
  2. 复制文件:使用cp命令将文件复制到一个新的位置,以确保数据不会丢失。
代码语言:txt
复制
cp /proc/12345/fd/4 /path/to/newfile.txt

在这个例子中,/proc/12345/fd/4是进程ID为12345的进程打开的文件描述符,指向被删除的文件。

注意事项

  • 数据完整性:恢复文件时,应尽快进行,以避免数据被覆盖。
  • 权限:确保有足够的权限访问被删除文件的进程和文件系统。
  • 备份:定期备份重要数据,以防止数据丢失。

总结

通过lsof命令可以查找并列出被删除但仍被进程占用的文件,然后可以使用cp命令将这些文件复制到新的位置进行恢复。这种方法适用于文件刚被删除且仍被进程占用的情况。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Linux|如何查找和删除重复文件

Rdfind rdfind,即“重复数据查找”,是一个免费的命令行程序,它能够跨目录或在单一目录内搜索重复的文件。...文件排名的规则包括: 如果在处理输入参数时,A 比 B 更先被找到,那么 A 的优先级更高。 如果 A 比 B 在更深层次的目录中被找到,A 的优先级更高。...该文件包含 rdfind 找到的所有重复文件。如果需要,您可以查看该文件并手动删除重复的文件。...Rmlint Rmlint 是一个命令行工具,用于在 Linux 系统中查找和删除重复的和类似 lint 的文件。...] $ sudo zypper install fslint [On OpenSUSE] 总结 这些是在 Linux 系统上查找重复文件的非常有用的工具,但删除此类文件时应该非常小心。

19010
  • Linux下查找和删除7天以前的文件

    记一次linux下清理过期日志的过程; 环境说明:删除/var/log/下7天以前的.log文件; 用到的命令:find、rm; 命令示例:find /var/log/ -mtime +7 -...name "*.log" -exec rm {} \; 说明: find :查找命令 /var/log/ :需要查找的文件路径 -mtime +7 :按文件更改时间来查找文件,-7指7天以内,+7指...#在/home下查找最近两天内改动过的文件 find /home -atime -1                   #查找1天之内被存取过的文件 find /home -mmin +60...                  #在/home下查找60分钟前改动过的文件 find /home -amin +30                  #查找最近30分钟前被存取过的文件... tmp.txt -ok   rm {} \; #查找tmp下名为tmp.txt的文件并删除它,-ok:删除前提示 find  / -amin    -10

    5.9K20

    linux防止文件和目录被意外删除或修改

    为了防止在 Linux 系统中意外删除一些重要文件或目录,除了必要的备份之外,还有一个好方法,就是使用 chattr(Change Attribute)命令 在类 Unix 等发行版中,该命令能够有效防止文件和目录被意外的删除或修改...file 文件在 Linux 中被描述为一个数据结构,chattr 命令在大多数现代 Linux 操作系统中是可用的,可以修改file属性,一旦定义文件的隐藏属性,那么该文件的拥有者和 root 用户也无权操作该文件...,只能解除文件的隐藏属性。...s:保密性删除文件或目录; S:即时更新文件或目录; u:预防意外删除。...其它参数 -R:递归处理,将指令目录下的所有文件及子目录一并处理; -v:设置文件或目录版本; -V:显示指令执行过程 设置文件不能被改名,移动删除,增删数据 > lsattr rumenz.txt

    1.9K00

    linux防止文件和目录被意外删除或修改

    为了防止在 Linux 系统中意外删除一些重要文件或目录,除了必要的备份之外,还有一个好方法,就是使用 chattr(Change Attribute)命令 在类 Unix 等发行版中,该命令能够有效防止文件和目录被意外的删除或修改...file 文件在 Linux 中被描述为一个数据结构,chattr 命令在大多数现代 Linux 操作系统中是可用的,可以修改file属性,一旦定义文件的隐藏属性,那么该文件的拥有者和 root 用户也无权操作该文件...,只能解除文件的隐藏属性。...s:保密性删除文件或目录; S:即时更新文件或目录; u:预防意外删除。...其它参数 -R:递归处理,将指令目录下的所有文件及子目录一并处理; -v:设置文件或目录版本; -V:显示指令执行过程 设置文件不能被改名,移动删除,增删数据 > lsattr rumenz.txt

    1.6K20

    linux防止文件和目录被意外删除或修改

    为了防止在 Linux 系统中意外删除一些重要文件或目录,除了必要的备份之外,还有一个好方法,就是使用 chattr(Change Attribute)命令 在类 Unix 等发行版中,该命令能够有效防止文件和目录被意外的删除或修改...file 文件在 Linux 中被描述为一个数据结构,chattr 命令在大多数现代 Linux 操作系统中是可用的,可以修改file属性,一旦定义文件的隐藏属性,那么该文件的拥有者和 root 用户也无权操作该文件...,只能解除文件的隐藏属性。...s:保密性删除文件或目录; S:即时更新文件或目录; u:预防意外删除。...其它参数 -R:递归处理,将指令目录下的所有文件及子目录一并处理; -v:设置文件或目录版本; -V:显示指令执行过程 设置文件不能被改名,移动删除,增删数据 > lsattr rumenz.txt

    2.1K00

    java删除linux文件_Java删除文件

    大家好,又见面了,我是你们的朋友全栈君。...//将缓冲文件夹中的文件删除 String s = “D:\\txt\\inBuffer\\”+ fileInfo[0] +”\\” + fileID;//文件的绝对路径 File file = new...; } } ——————————————————————————– Java删除文件注意事项:1.路径上不能出现java认为的非法字符,如“(”,“)”等; 2.确保删除操作之前,文件不再被使用,即文件资源被释放...——————————————————————————– java删除文件与文件夹时,要删除的内容: 1.文件夹里的文件; 2.文件夹里面的子文件夹(有文件); 3.文件夹里面的子文件夹(空文件夹); —...} } // 删除指定文件夹下所有文件 // param path 文件夹完整绝对路径 public static boolean delAllFile(String path) { boolean

    19.9K20

    递归查找文件和递归删除文件

    list方法: 此方法可以列出目录下的所有文件和文件夹,返回的是文件/文件夹的名称,是字符串类型的。   代码示例: ? 运行结果: ?...isFile()判断是否是文件方法,此方法返回的是boolean值,可以利用这个方法判断列出来的哪些是文件哪些是文件夹。 代码示例: ? 运行结果: ?...前者能使用File的操作方法例如获得文件路径、判断是否是文件、获得文件的大小。后者因为只是字符串类型,所以只能或得文件的名称。同样的两者都是起到过滤的作用: 代码示例: ? 运行结果: ?...递归查找方法: 想要查找某个目录或者某个盘符下的全部文件或者文件夹,都可以利用递归来完成。   代码示例: ? 运行结果: ?...递归删除方法: 同样的利用递归一个个去找文件夹,找到了就直接删除,因为文件夹删除了里面的文件也删除了,也就不需要再去先找到文件删除再删除文件夹,如果先找到文件删除再删除文件夹这样就多了一步操作了。

    1.7K10

    Linux 恢复删除的文件

    Linux 下的命令可谓繁多,但属rm最让人痛并快乐。今天,我分享下针对rm的后悔良药testdisk。...当你在 Linux 系统上删除一个文件时,它不一定(嗯,是不一定~)会永远消失,特别是当你最近才刚刚删除了它的时候。而恢复已删除文件的最佳工具之一testdisk可以帮助你拯救它。...虽然testdisk具有广泛的功能,包括恢复丢失或损坏的分区和使不能启动磁盘可以重新启动,但它也经常被用来恢复被误删的文件。...有趣的是,它不仅是一个 Linux 工具,而且还适用于 MacOS、Solaris 和 Windows。文档可在 https://www.cgsecurity.org 中找到。...安装# debianapt install testdisk# centosyum install testdisk恢复文件cd /mnt/recoverytestdisk /dev/sdb2然后,一路默认选项

    14.2K20

    Linux中的文件查找技巧

    前言 Linux常用命令中,有些命令可以帮助我们查找二进制文件,帮助手册或源文件的位置,也有的命令可以帮助我们查找磁盘上的任意文件,今天我们就来看看这些命令如何使用。...#查找之前删除locate.txt #虽然文件不存在,但是仍然被查找出来 /home/hyb/workspaces/shell/locate/locate.txt locate -e locate.txt...locate查找存在的一个问题是,如果最近有文件被删除,它仍然能找出来,最近有文件增加,它却找不到。也就是说,它的查找并不具备实时性。...find find命令是linux下一个强大的查找命令。与locate命令相比,它需要遍历磁盘文件,因此查找速度较慢,但正因如此,它的实时性比locate好得多。..../ -user root #查找当前目录下root用户的文件 find ./ -nouser #查找当前目录下root用户的被删除的文件 -group,-nogroup类似的用法,只不过条件是用户组

    5.6K10

    【Linux入门】文件查找

    常用命令 which:命令查找 whereis:在系统特定目录下查找文件 locate:利用数据库查找文件 find:文件查找 命令查找 which which 命令用于查找指定命令(脚本文件)的可执行文件路径...】环境变量所规范的路径,去查找执行文件的文件名,有些命令不在环境变量所指定的路径中,则无法查找到 在系统特定目录下查找文件 whereis whereis 命令只是在特定目录下查找文件并返回路径,并没有查找硬盘上的所有文件...命令格式: whereis [参数] 文件名或目录名 # 参数 -l:列出 whereis 会查找的几个主要目录 -b:只查找 binary 二进制格式的文件 -m:只查找说明文件 manual 路径下的文件...chpasswd /etc/pam.d/passwd /etc/security/opasswd locate 是通过数据库来查找,而数据库的建立默认是由系统每天执行一次,所以新建立的文件可能无法被及时搜索到...-7 # 查找指定目录下大于1MB的文件并删除(谨慎操作) find /home/test/ -size +1M -exec rm {} ; # 查找指定目录下名称中包含 test 的文件 find

    29231

    linux下的删除文件命令,Linux下删除文件命令「建议收藏」

    在linux中删除文件与文件夹我们可以直接使用rm就可以删除了,彻底删除文件或文件夹我们可以使用shred命令来完成,接下来是小编为大家收集的Linux下删除文件命令,希望能帮到大家。...Linux下删除文件命令 linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm -rf命令即可。...、文件夹 需要提醒的是:使用这个rm -rf的时候一定要格外小心,linux没有回收站的 2 删除文件 de>rm -f fileNamede> 使用 rm -rf 的时候一定要格外小心,linux没有回收站的...删除指定文件之外的其他文件 一、Linux下删除文件和文件夹常用命令如下: 删除文件: rm file 删除文件夹: rm -rf dir 需要注意的是, rmdir 只能够删除 空文件夹。...(keep1 | keep2) #删除keep1和keep2文件之外的所有文件 Linux中彻底删除文件 shred彻底删除文件的方法: $ shred -u file shred会用一些随机内容覆盖文件所在的节点和数据块

    47.3K31

    【文件IO】实现:查找文件并删除、文件复制、递归遍历目录查找文件

    一、文件查找并删除 扫描指定⽬录,并找到名称中包含指定字符的所有普通⽂件(不包含⽬录),并且后续询问⽤⼾是否 要删除该⽂件 一个主要的操作就是需要扫描指定目录(递归) 递归函数 首先判断是否是目录,若不是...调用删除文件方法 doDelete 若磁石遍历到的仍是目录 继续递归 public class Demo15 { //递归目录的方法 private static...//进行递归查找 scan(rootFile,key); } } 二、文件复制 进⾏普通⽂件的复制 把一个文件里面的每个字节都读出来,再写入另一个文件中...尤其是遇到硬盘上有些大的文件 这种思路不能适应频繁查询场景,也不能适应目录中文件数目特别多,特别大的场景 咱们搜索引擎中,进行搜索的过程,也就是在文件中查找内容是否被包含的过程 搜索出来的结果其实就是一些...,从而快速查找 用到一些业界成熟的方案,比如 ES(倒排索引原理) 这种

    10010

    Linux apt 查找、安装、升级、删除命令

    Linux apt 命令 apt(Advanced Packaging Tool)是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器。...apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。 apt 命令执行需要超级管理员权限(root)。...,安装大小,依赖关系等等:sudo apt show 删除软件包命令:sudo apt remove 清理不再使用的依赖和库文件: sudo...apt autoremove 移除软件包及配置文件: sudo apt purge 查找软件包命令: sudo apt search 列出所有已安装的包...: apt show pinta 列出可更新的软件包: apt list --upgradeable 清理不再使用的依赖和库文件: sudo apt autoremove 在以上交互式输入字母 Y

    4.9K40

    Linux删除重复文件

    引言 在Linux系统处理数据时,经常会遇到删除重复文件的问题。例如,在进行图片分类任务时,希望删除训练数据中的重复图片。在Linux系统中,存在一个fdupes命令可以查找并删除重复文件。 2....Fdupes介绍 Fdupes是Adrian Lopez用C语言编写的Linux实用程序,它能够在给定的目录和子目录集中找到重复文件,Fdupes通过比较文件的MD5签名然后进行字节比较来识别重复文件。...安装fdupes 以CentOS系统为例,fdupes的安装命令为: sudo yum install -y fdupes 4. fdupes的使用 删除重复文件,并且不需要询问用户: $ fdupes...-dN [folder_name] 其中,-d参数表示保留一个文件,并删除其它重复文件,-N与-d一起使用,表示保留第一个重复文件并删除其它重复文件,不需要提示用户。.../ https://www.howtoing.com/fdupes-find-and-delete-duplicate-files-in-linux http://www.runoob.com/linux

    13.4K20
    领券