网站首页 > 技术教程 正文
rm(Remove)和lsof(List Open Files)是 Linux 命令行工具,直接操作文件系统。rm用于删除文件和目录;lsof用于查看进程打开的文件、网络连接、设备等信息。rm删除的文件不会进入回收站,直接从文件系统中移除。移除方式是将该文件的文件索引(inode)被标记为“可覆盖”,文件内容仍存在于磁盘上,直到被新数据覆盖后才彻底消失。如果被删除的文件还有其它进程在使用,那么这个文件索引还会留存在内存中,可以通过lsof命令查到该文件句柄信息进行恢复。
lsof命令输出格式,以lsof -i查看网络连接信息为例,了解lsof输出格式:
$ lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
firefox-e 37331 kali 61u IPv4 92477 0t0 TCP 192.168.0.149:57594->a23-2-16-200.deploy.static.akamaitechnologies.com:http (ESTABLISHED)
firefox-e 37331 kali 90u IPv4 92471 0t0 TCP 192.168.0.149:49284->166.188.117.34.bc.googleusercontent.com:https (ESTABLISHED)
firefox-e 37331 kali 91u IPv4 92475 0t0 UDP *:54664
firefox-e 37331 kali 94u IPv4 92476 0t0 TCP 192.168.0.149:49292->166.188.117.34.bc.googleusercontent.com:https (ESTABLISHED)
firefox-e 37331 kali 98u IPv4 92483 0t0 TCP 192.168.0.149:43890->203.208.41.34:http (ESTABLISHED)
参数信息:
COMMAND:进程名称。
PID:进程 ID。
USER:运行进程的用户。
FD:文件描述符。
TYPE:文件类型(REG 普通文件,DIR 目录,IPv4 网络连接)。
DEVICE:设备号。
SIZE/OFF:文件大小或偏移量。
NODE:文件的 inode 号。
NAME:文件名或网络地址。
现在开始使用lsof恢复rm删除的文件:
1、准备测试环境,生成1个测试文件,并核验文件MD5信息,用于验证后续文件恢复完整性:
#创建测试文件
sudo echo 'this is first test file' > test1.file
# 验证文件信息
sudo md5sum test1.file
sudo md5sum /var/log/dpkg.log
输出结果
e85c249841799bafda554f52eeaa927a test1.file
b9258a66fff11af806672177ff616eb9 /var/log/dpkg.log
2、为了确保演示效果,操作开始前会新启用一个窗口用more命令打开文件dpkg.log,然后删除test1.file和dpkg.log,普通文件如果直接删除的话在内存中不会有留存信息:
# 删除目标文件
rm test1.file
rm /var/log/dpkg.log
# 检查进程缓存信息
lsof |grep delete |grep test1.file
lsof |grep delete |grep dpkg.log
输出信息
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
lsof: WARNING: can't stat() fuse.portal file system /run/user/1000/doc
Output information may be incomplete.
more 55182 kali 4r REG 8,1 1376543 4980795 /var/log/dpkg.log (deleted)
根据查询到的信息,我们可以了解到more命令正在使用该文件,进程号是55182,文件描述符是4,接着就可以到/proc/pid/fd目录下查看信息。
3、到缓存fd文件句柄目录下查看文件信息:
# 进入进程文件句柄目录查看信息
cd /proc/55182/fd
ll
输出信息如下:
total 0
lrwx------ 1 kali kali 64 Apr 5 22:16 0 -> /dev/pts/1
lrwx------ 1 kali kali 64 Apr 5 22:16 1 -> /dev/pts/1
lrwx------ 1 kali kali 64 Apr 5 22:16 2 -> /dev/pts/1
lrwx------ 1 kali kali 64 Apr 5 22:16 3 -> 'anon_inode:[signalfd]'
lr-x------ 1 kali kali 64 Apr 5 22:16 4 -> '/var/log/dpkg.log (deleted)'
4、使用cp命令或者dd命令进行数据恢复验证,如果文件比较大,建议优先选用dd命令:
# 使用cp命令恢复数据
sudo cp /proc/55182/fd/4 /tmp/dpkg_cp.log
# 使用dd命令恢复数据
sudo dd if=/proc/55182/fd/4 of=/tmp/dpkg_dd.log bs=4096
命令说明:
if:指定输入文件位置
of:指定输出文件位置
bs:指定文件块大小
输出结果:
336+1 records in
336+1 records out
1376543 bytes (1.4 MB, 1.3 MiB) copied, 0.00210032 s, 655 MB/s
# 核验恢复数据完整性
md5sum /tmp/dpkg_*
输出结果:
b9258a66fff11af806672177ff616eb9 /tmp/dpkg_cp.log
b9258a66fff11af806672177ff616eb9 /tmp/dpkg_dd.log
使用lsof恢复rm删除的文件局限性很强,就是要求删除的文件必须是有其它进程占用;本质是从进程内存中提取未释放的磁盘数据,操作简单但依赖进程保持活跃状态,无进程残留就不适用于此方法。
- 上一篇: Linux下用rm误删除文件的三种恢复方法
- 下一篇: linux下如何可靠的删除一个文件
猜你喜欢
- 2025-05-24 C语言remove函数详解:“文件粉碎机”
- 2025-05-24 飞牛云 fnOS 安装和深度体验,NAS界的黑马?
- 2025-05-24 Zend Studio使用教程:卸载Zend Studio
- 2025-05-24 deepin V23 Release 安装与功能介绍!!!
- 2025-05-24 推荐 28 款必备的良心软件,每一款都是黑科技
- 2025-05-24 Python os模块完全指南:轻松玩转文件管理与系统操作
- 2025-05-24 一个基于NetCore开发的前后端分离CMS系统
- 2025-05-24 如何选择最适合您的数据恢复软件工具?10 大最佳数据恢复软件
- 2025-05-24 这5款数据恢复软件你一定要用!恢复数据实用有效!
- 2025-05-24 小科普 | 文件恢复哪家强?5个软件横向对比
你 发表评论:
欢迎- 最近发表
-
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
- linux移植(Linux移植freemodbus)
- 独家解读:Win10预览版9879为何无法识别硬盘
- 基于Linux系统的本地Yum源搭建与配置(ISO方式、RPM方式)
- Docker镜像瘦身(docker 减小镜像大小)
- 在linux上安装ollama(linux安装locale)
- 渗透测试系统Kali推出Docker镜像(kali linux渗透测试技术详解pdf)
- Linux环境中部署Harbor私有镜像仓库
- linux之间传文件命令之Rsync傻瓜式教程
- 解决ollama在linux中安装或升级时,通过国内镜像缩短安装时长
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)