误删之后时间就是数据
文件被删除后,数据块在文件系统上会被标记为可复用,但内容通常还留在原位,直到被新的写入覆盖。因此处置的第一原则是尽量停止对该文件系统的写入:暂停相关服务、避免安装软件、不要执行会大量写盘的任务,为后续恢复争取窗口。
两条恢复路径
第一条是句柄回捞:如果仍有进程打开着被删文件,可以通过进程的文件描述符把内容复制出来,成功率最高且不依赖任何第三方工具。第二条是从备份或快照恢复:先确认最近可用备份的时间点与覆盖范围,再决定整目录恢复还是单文件恢复,恢复后核对属主与权限。
基本信息
| 首要动作 | 减少对该文件系统的写入 |
|---|---|
| 句柄回捞 | 通过进程文件描述符复制仍被打开的文件 |
| 备份恢复 | 按备份或存储快照的时间点恢复 |
| 恢复后核对 | 属主、权限、内容完整性 |
典型使用场景
- 运维误执行删除操作,删掉了业务数据目录
- 脚本变量为空导致删除范围超出预期
- 数据库文件被误删,需要尽快降低损失
- 误删文件仍被服务进程打开,希望不停机恢复
- 事故复盘时整理恢复时间线与处置动作
止损与句柄回捞
止损与句柄回捞
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 # 核对属主权限
# 恢复完成后跑业务校验,确认数据可用恢复路径选择
| 条件 | 可用手段 | 成功率 |
|---|---|---|
| 进程仍持有句柄 | 从文件描述符复制 | 高,且可不停机 |
| 有存储快照 | 按快照时间点恢复 | 取决于快照频率 |
| 有文件级备份 | 按备份恢复后比对 | 取决于备份覆盖范围 |
| 无句柄无备份 | 第三方恢复工具 | 低,且需先停止写入 |
| 数据库文件 | 按数据库恢复流程处理 | 需结合日志与备份 |
恢复窗口内不要安装工具或执行大批量任务:写入越多,文件级找回的概率越低。有快照的情况下优先用快照恢复,比在线上直接操作更安全。