温馨提示×

ubuntu挂载设备后数据丢失怎么办

小樊
44
2025-11-29 13:59:54
栏目: 智能运维

Ubuntu 挂载后数据“消失”的排查与恢复

一、先判断是“隐藏”还是“被覆盖/删除”

  • 执行以下命令查看当前挂载情况:
    • 查看磁盘与分区:lsblk
    • 查看挂载点:df -h
    • 查看某目录是否挂载:mount | grep /your/dir
  • 现象与处理要点:
    • 若看到目标目录(如 /data)已挂载到新设备(如 /dev/sdb1),而该目录原本有文件,极可能是被新挂载“隐藏”。原因是 VFS 把挂载点切换到了新设备,原目录内容并未删除,卸载后即可恢复可见。
    • 若挂载前该目录为空,或你执行过 cp/rsync/mv 到该目录,或执行了 mkfs/格式化,则属于覆盖/删除风险,需要进入数据恢复流程。

二、属于“隐藏”时的快速恢复步骤

  • 卸载新盘,让原目录内容重新可见:
    • sudo umount /data
  • 用“跳板目录”迁移数据(避免覆盖原内容):
    • 创建跳板:sudo mkdir /mnt/new
    • 挂载新盘到跳板:sudo mount /dev/sdb1 /mnt/new
    • 复制原数据到新盘:sudo cp -rpf /data/ /mnt/new*
  • 重新挂载到目标目录并验证:
    • sudo umount /mnt/new
    • sudo mount /dev/sdb1 /data
    • 检查:ls /datadf -h
  • 设置开机自动挂载(按实际文件系统替换 ext4,建议使用 UUID 而非 /dev/sdX):
    • 获取 UUID:lsblk -f
    • 编辑:sudo nano /etc/fstab
    • 示例行:UUID=xxxx-xxxx /data ext4 defaults 0 2
    • 验证:sudo mount -a(无报错即正常)

三、已覆盖/误删时的恢复思路与工具

  • 立即停止对目标分区的写入(下载、解压、缓存、日志等),优先在只读或卸载状态下操作,避免新写入覆盖可恢复数据块。
  • 文件系统为 ext3/ext4
    • 工具:extundelete
    • 安装:sudo apt-get install extundelete
    • 卸载目标分区:sudo umount /dev/sdXY
    • 恢复示例:
      • 恢复全部:sudo extundelete /dev/sdXY --restore-all(在当前目录生成 RECOVERED_FILES
      • 按 inode 恢复:sudo extundelete /dev/sdXY --restore-inode <inode号>
  • 文件系统为 NTFS(或不确定类型):
    • 工具:TestDisk
    • 安装:sudo apt-get install testdisk
    • 运行:sudo testdisk,选择磁盘与分区 → 进入 Advanced → 选 Undelete → 勾选需要恢复的文件(绿色)→ C 复制到指定目录(不要回写到原分区)。
  • 其他通用恢复工具与方法:
    • 工具:foremost(按文件类型恢复)
    • 命令示例:foremost -t zip -i /dev/sdXY
    • 必要时用 Live CD/USB 启动后在只读环境下恢复,降低写入风险。

四、预防与最佳实践

  • 挂载前先备份目标目录(如 tar/cp -a),再挂载新盘。
  • 使用 UUID 配置 /etc/fstab,避免设备名变动导致错挂。
  • 迁移数据时始终用“跳板目录”方式,确认无误后再切换为正式挂载点。
  • 重要数据定期做离线/异地备份(如 Timeshift、rsync 到另一块盘/NAS)。

0