首页/数据/备份与容灾速查/进程句柄未关闭时的文件恢复

进程句柄未关闭时的文件恢复

文件被删除但仍有进程持有打开句柄时,可直接从 /proc/<pid>/fd 复制回来:这是恢复速度较快的一类场景,不需要扫描磁盘。

备份与容灾速查数据更新于 2026-10-12

定位与抢救

定位与抢救
lsof +L1                          # 列出『已删除但被进程占用』的文件
ls -l /proc/12345/fd/ | grep deleted
# 找到对应 fd 后直接复制(进程重启前有效)
cp /proc/12345/fd/7 /recovery/app.log
ls -l /recovery/app.log           # 校验大小与内容
前提删除后进程未重启、句柄未关闭
适用日志文件、临时数据、被误删的配置
不适用进程已退出或文件已无句柄:回到备份/扫描路径
数据库数据文件被误删时该技巧通常不适用(多文件依赖与一致性问题),应走数据库恢复流程。

易错点

  • 先重启服务再想恢复:进程一重启句柄丢失,只能靠扫描或备份
  • 复制出的文件不校验完整性:截断或损坏的副本被当作恢复结果使用

数据来源与参考

  • man 5 proc(/proc/pid/fd)
  • lsof 手册(+L1 选项)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌