首页/系统/信创系统运维速查/误删文件的应急处置
常见问题65 条

误删文件的应急处置

误删后动作要快:立刻减少对相关文件系统的写入,检查进程是否仍持有句柄(可回捞),优完从备份或快照恢复。

信创系统运维速查系统更新于 2026-10-13

误删之后时间就是数据

文件被删除后,数据块在文件系统上会被标记为可复用,但内容通常还留在原位,直到被新的写入覆盖。因此处置的第一原则是尽量停止对该文件系统的写入:暂停相关服务、避免安装软件、不要执行会大量写盘的任务,为后续恢复争取窗口。

两条恢复路径

第一条是句柄回捞:如果仍有进程打开着被删文件,可以通过进程的文件描述符把内容复制出来,成功率最高且不依赖任何第三方工具。第二条是从备份或快照恢复:先确认最近可用备份的时间点与覆盖范围,再决定整目录恢复还是单文件恢复,恢复后核对属主与权限。

基本信息

首要动作减少对该文件系统的写入
句柄回捞通过进程文件描述符复制仍被打开的文件
备份恢复按备份或存储快照的时间点恢复
恢复后核对属主、权限、内容完整性

典型使用场景

  • 运维误执行删除操作,删掉了业务数据目录
  • 脚本变量为空导致删除范围超出预期
  • 数据库文件被误删,需要尽快降低损失
  • 误删文件仍被服务进程打开,希望不停机恢复
  • 事故复盘时整理恢复时间线与处置动作

止损与句柄回捞

止损与句柄回捞
systemctl stop <相关服务>                     # 先停止相关写入
lsof 2>/dev/null | grep -i deleted | grep -i <文件名关键字>
ls -l /proc/<PID>/fd | grep -i <文件名关键字>  # 查看进程持有的句柄
cp /proc/<PID>/fd/<FD号> /recover/文件名       # 前提:句柄仍然有效
# 恢复出的文件要单独核对大小与内容后再回放

从备份恢复

从备份恢复
ls -lh /backup/ | head                        # 确认最近可用备份
# 数据库按产品恢复流程执行;文件级从备份或快照拷回
rsync -av /backup/data/ /data/                # 示例:按目录恢复
chown -R <用户>:<用户> /data && chmod -R 750 /data   # 核对属主权限
# 恢复完成后跑业务校验,确认数据可用

恢复路径选择

条件可用手段成功率
进程仍持有句柄从文件描述符复制高,且可不停机
有存储快照按快照时间点恢复取决于快照频率
有文件级备份按备份恢复后比对取决于备份覆盖范围
无句柄无备份第三方恢复工具低,且需先停止写入
数据库文件按数据库恢复流程处理需结合日志与备份
恢复窗口内不要安装工具或执行大批量任务:写入越多,文件级找回的概率越低。有快照的情况下优先用快照恢复,比在线上直接操作更安全。

易错点

  • 误删后继续跑业务或安装恢复工具,新写入覆盖了原数据块,恢复概率大幅下降
  • 句柄回捞前没有确认进程是否仍打开该文件,直接尝试复制只会得到空文件或报错
  • 从备份恢复前不确认备份时间点,恢复出更旧的数据,反而扩大数据不一致范围
  • 恢复文件后忘记核对属主与权限,服务因权限不足起不来,问题被误判为恢复失败

数据来源与参考

  • man 8 lsof
  • man 5 proc
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌