运维救援:数据救援与系统修复
在 Linux 中执行 rm -rf 或遇到文件系统变为 Read-Only 时,你的数据并没有立即消失。只要掌握科学的修复流程,大部分灾难都是可逆的。
1. 救命的第一法则:只读与停止
最重要的一步
立即停止所有写入操作!
如果可能,请立即 umount 分区。如果文件系统变为只读,千万不要强制 remount 为 rw 运行修复脚本。
2. 核心文件系统修复:fsck 家族
针对不同的文件系统,修复工具各不相同:
2.1 Ext4 修复
# -y 自动确认所有修复建议
sudo fsck.ext4 -y /dev/sda12.2 XFS 修复 (无 fsck)
XFS 拥有自愈能力,但如果日志重放失败,需手动修复:
sudo xfs_repair /dev/sdb12.3 Btrfs 深度救援 (硬核)
Btrfs 是写时复制 (CoW) 架构,修复风险较高:
- 恢复文件:
btrfs restore /dev/sdc1 /mnt/backup(在不挂载的情况下提取文件)。 - 最后手段:
btrfs check --repair /dev/sdc1(慎用,可能造成更大数据丢失)。
3. 逻辑卷与加密救援
3.1 LVM 元数据恢复
如果 pvscan 找不到物理卷,但物理磁盘还在:
# 查看 LVM 自动备份的配置
ls /etc/lvm/archive/
# 恢复元数据
sudo vgcfgrestore -f /etc/lvm/archive/vg0_00001.vg vg03.2 LUKS 加密盘救援
如果你弄丢了 LUKS 分区的 Header,即便有密码也无法打开。
- 预防:
cryptsetup luksHeaderBackup /dev/sda2 --header-backup-file my_header.bin - 恢复:
cryptsetup luksHeaderRestore /dev/sda2 --header-backup-file my_header.bin
4. 暴力提取:TestDisk 与 PhotoRec
当分区表损坏(RAW 状态)时,TestDisk 是你的最后一道防线。
- 运行
sudo testdisk。 - 选择 [Analyse] -> [Quick Search]。
- 绿色显示的分区代表可恢复,按
P预览文件,按Write写入分区表。
如果文件名全部丢失,PhotoRec 会通过扫描字节流寻找文件头(如 JPG, PDF 签名):
# 启动后选择目标磁盘和恢复存储位置
sudo photorec /dev/sdb