当前位置: 代码网 > 服务器>服务器>Linux > Linux使用find -delete恢复误删文件的方法

Linux使用find -delete恢复误删文件的方法

2026年07月28日 Linux 我要评论
前言在运维工作中,误删文件是每个人都可能遇到的“噩梦”。本文记录了一次真实的误删恢复案例,希望能为大家提供参考。关键词:数据恢复、linux、extundelete、rsync

前言

在运维工作中,误删文件是每个人都可能遇到的“噩梦”。本文记录了一次真实的误删恢复案例,希望能为大家提供参考。

关键词:数据恢复、linux、extundelete、rsync、rman

一、事故经过

某日,在执行日常清理脚本时,误执行了以下命令:

find /app/middleware/middleware-project-module -type f -mtime +180 -delete

原本意图是清理超过180天的旧文件,但由于路径拼写错误,导致目标目录下的文件被批量删除。受影响的目录包括:

  • lib/(依赖库)
  • bin/(启动脚本)
  • conf/(配置文件)

影响:服务无法启动,项目中断约30分钟。

二、紧急止血

数据恢复的第一原则:立即停止对磁盘的写入操作

# 以只读方式重新挂载分区
sudo mount -o remount,ro /app/middleware

这一步可以最大程度防止已删除的数据块被新数据覆盖。

三、恢复方案选择

根据是否有备份,选择不同的恢复策略:

场景推荐方案
有完整备份包重新解压部署
有远程备份服务器使用 rsync 同步
无备份使用 extundelete 恢复

方案一:重新解压部署(最快)

如果项目有原始的 .tar.gz 安装包:

tar -xzf middleware.tar.gz -c /app/middleware/

方案二:从备份服务器同步

rsync -avz --delete -e 'ssh -p 2222' \
  root@192.168.x.x:/backup/middleware/ /app/middleware/

方案三:使用 extundelete 恢复

# 安装工具
sudo yum install -y extundelete
# 恢复指定目录
sudo extundelete /dev/sdb1 --restore-directory /app/middleware/lib
sudo extundelete /dev/sdb1 --restore-directory /app/middleware/bin
sudo extundelete /dev/sdb1 --restore-directory /app/middleware/conf
# 恢复的文件位于 ./recovered_files/
————————————————
版权声明:本文为csdn博主「一十九的酒」的原创文章,遵循cc 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/gary192211112/article/details/160395102

四、权限修复

从 windows 上传或恢复的文件,用户和权限可能不正确:

# 修改所有者和组
chown -r appuser:appgroup /app/middleware/
# 设置目录权限
find /app/middleware/ -type d -exec chmod 755 {} \;
# 设置文件权限
find /app/middleware/ -type f -exec chmod 644 {} \;
# 设置可执行脚本
chmod +x /app/middleware/bin/*.sh

五、经验总结

5.1 教训

  1. find -delete 极其危险,执行前务必先用 -ls 预览
  2. 脚本路径使用变量,避免硬编码错误
  3. 重要操作前先备份

5.2 最佳实践

# 安全删除模板
find /target/path -type f -mtime +180 -ls   # 先预览
find /target/path -type f -mtime +180 -delete  # 确认后执行

5.3 定期备份策略

备份类型频率保留
全量备份每周28天
增量备份每日14天
归档日志实时14天

5.4 自动化备份脚本示例

#!/bin/bash
# 每周全量备份
backup_dir=/backup/project
rman target / << eof
backup incremental level 0 tag 'full' 
  format '${backup_dir}/full_%d_%t_%s_%p' database;
delete noprompt backup completed before 'sysdate-28';
eof
————————————————
版权声明:本文为csdn博主「一十九的酒」的原创文章,遵循cc 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/gary192211112/article/details/160395102

六、结语

数据无价,预防胜于治疗。建议:

  • ✅ 重要文件定期备份
  • ✅ 删除操作使用 mv 先移到临时目录
  • ✅ 关键服务器配置堡垒机审计
  • ✅ 定期演练恢复流程

你的备份策略,决定了你的恢复上限。

附录:常用恢复命令速查

场景命令
查看文件系统df -th
只读挂载mount -o remount,ro /dev/sdb1
安装 extundeleteyum install -y extundelete
恢复目录extundelete /dev/sdb1 --restore-directory /path
恢复全部extundelete /dev/sdb1 --restore-all
rsync 同步rsync -avz --delete user@host:/src/ /dst/
批量改权限chown -r user:group /path

脱敏对照表(内部参考)

原始内容脱敏后
/app/tomee/tomee-3dspace-cas3/app/middleware/middleware-project-module
tomee.tar.gzmiddleware.tar.gz
tomee 用户appuser
oinstall 组appgroup
/backup/pdm-db01/backup/project
pdmdb1proddb1

本文已脱敏处理,所有 ip、路径、用户名均为示例,请根据实际环境调整。

以上就是linux使用find -delete恢复误删文件的方法的详细内容,更多关于linux find -delete恢复误删文件的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com