运维救援:数据救援与系统修复

在 Linux 中执行 rm -rf 或遇到文件系统变为 Read-Only 时,你的数据并没有立即消失。只要掌握科学的修复流程,大部分灾难都是可逆的。


1. 救命的第一法则:只读与停止

🚫 最重要的一步

立即停止所有写入操作! 如果可能,请立即 umount 分区。如果文件系统变为只读,千万不要强制 remount 为 rw 运行修复脚本。


2. 核心文件系统修复:fsck 家族

针对不同的文件系统,修复工具各不相同:

2.1 Ext4 修复

# -y 自动确认所有修复建议
sudo fsck.ext4 -y /dev/sda1

2.2 XFS 修复 (无 fsck)

XFS 拥有自愈能力,但如果日志重放失败,需手动修复:

sudo xfs_repair /dev/sdb1

2.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 vg0

3.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 是你的最后一道防线。

  1. 运行 sudo testdisk
  2. 选择 [Analyse] -> [Quick Search]
  3. 绿色显示的分区代表可恢复,按 P 预览文件,按 Write 写入分区表。

如果文件名全部丢失,PhotoRec 会通过扫描字节流寻找文件头(如 JPG, PDF 签名):

# 启动后选择目标磁盘和恢复存储位置
sudo photorec /dev/sdb

5. 结业练习

Navigation