警告:若数据块被覆盖,则无法恢复,第一时间问清楚是什么时候删除的数据,叮嘱不要继续再动了。
- 安装恢复软件extundelete
yum install extundelete -y - 如果是挂载的磁盘请卸载磁盘
umount -lf /dev/sdb
- 从根节点开发扫描,扫描结果如下所示
extundelete --inode 2 /dev/sda2
- 找到被删除文件所在的父目录或祖父目录的号码继续向下扫描(目录的inode号是其目录下面其他文件的开始的inode号,所以以它为基准向下扫描)
- 被删除的文件在3306目录,所以继续以3306的inode号为起始扫描
extundelete --inode 3801090 /dev/sda2
- 恢复被删除的文件(执行这条命令前,请cd进入到空间足够的分区,以免恢复造成空间不足)
extundetele --restore-inode 3801094 /dev/sda2
- 文件恢复后存放在执行命令时所在目录下的RECOVERED_FILES目录下,名称已变,建议文件数不多,一个个恢复再改名
- 恢复整个文件夹则不用改名,做这步前最好把文件夹中的内容备份到其他地方,以免恢复被覆盖,未测试过
extundelete /dev/sda2 --restore-directory /data/3306/
- 注意事项
如果是生产环境,上面有其他业务,应该确保在用户访问量最低的半夜进行,恢复需要卸载磁盘,不卸载没有尝试过,主要是有数据还在写入到磁盘,容易出错。
- 善后工作
收回非必要的权限,目录755,文件644,上线代码可用jenkins配合shell,shell拷贝前备份原来的包,如果没有这套最好让运维人员帮助上线,原则上开发人员没有任何权限。顶多给一个启动相关服务,查看相关日志的权限。公司最重要的是制度流程,什么人有什么权限必须要有书面规定,人员要权限也必须有申请记录,以免自己背黑锅!
时间: 2024-10-21 22:17:25