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 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 /data 与 df -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)。