①【项目背景】一条命令,三秒,/data没了
青山区一家软件公司的测试服务器,CentOS 7,/data挂在一块2TB的SATA盘上,ext4文件系统。运维小伙本来要删/tmp/old_build,手滑写成了rm -rf /data/*,还没加-i。三秒钟,两年积累的构建产物、客户样本库、Git裸库全没了。他做的第一件事是继续往这块盘上拷备份文件,想把损失补回来——这一步直接把能恢复的inode覆盖掉了一半。我到场时df显示已用空间从1.4TB变成120MB,但磁盘还在转,说明数据块大概率还在,只是索引没了。
②【咨询设计】先只读挂载,再谈工具
第一步不是装软件,是把盘卸下来挂到只读的救援环境。用Ubuntu Live USB启动,mount -o ro,noatime挂载,或者更稳妥用ddrescue做全盘镜像到一块4TB盘,之后所有操作都在镜像上做。ext4删除文件时清inode的dtime、释放数据块位图,但块内容不会立刻清零,只要没被新数据覆盖就能救。工具链分三层:extundelete适合刚删、日志完整的场景;ext4magic能按时间窗口恢复;testdisk/photorec做文件签名扫描兜底。这次因为客户覆盖过,extundelete只找回38%,photorec按签名扫出1.9万个文件,其中可用的大约62%。
③【施工规划】恢复盘、目标盘、系统盘,三块必须分开
很多人栽在“恢复到同一块盘”。这次用三块盘:源盘只读、镜像盘4TB、导出盘8TB,全部独立供电,避免一块电源故障带走三份数据。导出目录按文件类型分:tar.gz、git裸库、pdf、xlsx,因为签名恢复出来的文件名是f0001234.ext,得靠内容归类。Git裸库恢复后要跑git fsck --full,能修好大部分对象,但pack文件损坏的部分只能从开发人员本地仓库补。整个过程持续19小时,期间服务器不重启、不写入,机柜门贴封条。
④【安全补丁】删库的根因不是手滑,是权限太大
复盘发现三个问题:运维账号是root,没有sudo审计;/data没有快照;备份策略是每周日全量到同机另一块盘,机器一挂全没。整改做了四件事:禁止root直接登录,运维走个人账号加sudo,命令记进/var/log/sudo.log并转发到日志服务器;/data改成LVM,每天凌晨做LVM快照保留7天;备份改成异地NAS加对象存储双份,每周做一次恢复演练;危险命令加alias确认,rm指向一个包装脚本,删除超过100个文件必须二次确认。很多老板觉得买了备份软件就安全了,但实际上没演练过的备份,等于没有备份。
⑤【验收交付】能打开不算完,要能编译
验收标准定得很实:恢复出的Git裸库能clone,clone后能编译通过;样本库随机抽200个文件做SHA256比对,与客户本地留存的副本一致;构建产物里的jar包能正常启动。最终核心代码库恢复率100%(开发本地有副本),构建产物恢复率71%,历史样本恢复率64%。交付了恢复报告、文件清单、坏道分布图,并协助把备份策略落到文档。客户后来加了一块16TB盘做ZFS快照,算是把教训变成了投入。
⑥【售后承诺】手滑之后,第一件事是停手
记住顺序:停服务、卸载、断电、打电话。不要再往盘里写任何东西,不要重建文件系统,不要跑fsck。17704868686二十四小时有人接,包头市区2小时到场,大年三十也一样。数据恢复不成功不收服务费,恢复后的数据保留15天。平时我们也做免费的备份方案评审,别等出事才想起来问。
【不舍昼夜技术 · 包头IT全生命周期服务】
业务全闭环:咨询规划、方案设计、工程实施、竣工验收、维保售后。
咱能干的:包头修电脑/装监控/拉网线/做系统/救数据/办软件/卖耗材。
技术范畴:5G通信、大数据服务、信息系统集成、网络安全、商用密码、平面设计。
服务区域:昆区、青山区、九原区、东河区、高新区等包头全境,随叫随到。
技术热线:17704868686(本地专业团队,不舍昼夜为您守候!)