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

 更新时间:2026年07月28日 08:59:26   作者:一十九的酒  
在运维工作中,误删文件是每个人都可能遇到的噩梦,本文记录了一次真实的误删恢复案例,希望能为大家提供参考,需要的朋友可以参考下

前言

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

关键词:数据恢复、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恢复误删文件的资料请关注脚本之家其它相关文章!

相关文章

  • Linux中的安全配置技巧分享

    Linux中的安全配置技巧分享

    这篇文章主要介绍了Linux中的安全配置技巧,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • linux查看文件系统块大小与内存页大小的简单方法

    linux查看文件系统块大小与内存页大小的简单方法

    下面小编就为大家带来一篇linux查看文件系统块大小与内存页大小的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • 详解ubuntu20.04下CLion2020.1.3安装配置ROS过程说明

    详解ubuntu20.04下CLion2020.1.3安装配置ROS过程说明

    这篇文章主要介绍了ubuntu20.04下CLion2020.1.3安装配置ROS过程说明,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • Linux之死锁与解决方式

    Linux之死锁与解决方式

    这篇文章主要介绍了Linux之死锁与解决方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Linux zabbix agent部署及配置方法详解

    Linux zabbix agent部署及配置方法详解

    这篇文章主要介绍了Linux zabbix agent部署及配置方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • linux nand flash驱动编写

    linux nand flash驱动编写

    这篇文章主要介绍了linux nand flash驱动编写,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Linux下简易进度条的实现代码

    Linux下简易进度条的实现代码

    下面小编就为大家带来一篇Linux下简易进度条的实现代码。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • linux mysql8忘记密码的解决方案

    linux mysql8忘记密码的解决方案

    本文介绍了两种MySQL重置密码的方法:一是关闭登录验证重置密码,二是开启登录验证后重置密码,前者需要修改my.cnf配置文件并添加skip-grant-tables,后者则需删除此配置并直接输入新密码
    2026-04-04
  • NTP时间同步、ntpdate实现过程

    NTP时间同步、ntpdate实现过程

    本文主要介绍了NTP时间同步的方法,包括直接与外网时间服务器同步、搭建本地时间服务器同步,以及使用ntpdate命令手动同步时间,最后,还特别说明了Windows服务器设置NTP同步的方法
    2026-04-04
  • Linux虚拟机重启找不到IP的解决方案

    Linux虚拟机重启找不到IP的解决方案

    这篇文章主要为大家详细介绍了Linux虚拟机重启找不到IP问题的解决方案,文中通过示例图片和代码进行了详细的讲解,有需要的小伙伴可以参考下
    2024-12-12

最新评论