挂载新硬盘至/home后原目录变为lost+found,如何恢复?
恢复误挂载硬盘后丢失的/home目录数据
哇,这情况太闹心了——挂新硬盘到/home时操作失误,原主目录变lost+found还丢了,换谁都得急。别慌,咱一步步来尝试把数据找回来:
第一步:立刻停止写入,保护数据
首先绝对不要往/home所在的分区写入任何新内容!新数据会覆盖原文件的磁盘空间,直接降低恢复成功率。如果可以,最好把这块硬盘拆下来,挂到另一台机器上以只读模式访问;要是不想拆,就在当前系统里把分区重新挂载为只读:
# 先卸载分区(如果能卸载的话) sudo umount /home # 只读挂载,替换成你的实际分区名,比如/dev/sdb1 sudo mount -o ro /dev/your_home_partition /mnt/recover
可以用lsblk命令查看你的分区列表,找到对应/home的分区名。
第二步:先检查lost+found里的碎片
lost+found目录是文件系统修复工具fsck用来存放无法识别的文件/目录碎片的地方,你的原数据可能就在这里,只是名字变成了乱码数字:
- 先看看里面的内容:
ls -l /mnt/recover/lost+found - 用
file命令判断文件类型,比如:file /mnt/recover/lost+found/12345 - 如果是目录,直接进去查看内容;如果是文本文件,用
less或cat预览;找到对应的数据后,就可以重命名移回原来的位置,比如:mv /mnt/recover/lost+found/12345 /mnt/recover/old_user_home
第三步:用专业工具恢复目录或文件
如果lost+found里找不到完整的数据,就用专门的数据恢复工具,首推TestDisk(恢复目录结构)和PhotoRec(恢复单个文件)。
用TestDisk恢复完整目录结构
TestDisk擅长修复分区表、恢复丢失的目录,适合原分区结构被破坏的情况:
- 安装TestDisk:
# Debian/Ubuntu系 sudo apt install testdisk # RHEL/CentOS系 sudo yum install testdisk - 运行TestDisk:
sudo testdisk - 按提示操作:
- 选择要恢复的硬盘(比如
/dev/sdb),按回车 - 选择分区类型(一般选
Intel/PC partition),按回车 - 选择
[Analyze]->[Quick Search],扫描分区 - 如果找到原来的/home分区,选中它,按
p预览里面的文件,确认是你要的数据 - 确认后选择
[Write],恢复分区表,然后重启机器重新挂载分区,看看数据是否回来 - 如果Quick Search找不到,试试
[Deep Search](耗时更长,但能找到更久之前的分区)
- 选择要恢复的硬盘(比如
用PhotoRec恢复单个文件
如果目录结构彻底损坏,TestDisk救不回来,就用PhotoRec恢复单个文件:
- 运行PhotoRec:
sudo photorec - 按提示操作:
- 选择目标硬盘,按回车
- 选择要恢复的分区,按回车
- 选择文件系统类型(比如
ext4),按回车 - 选择非目标分区的目录作为恢复文件的保存位置(比如
/mnt/backup,绝对不能选/home所在的分区!) - 选择要恢复的文件类型(选
[All]恢复所有类型),然后按c开始扫描
- 扫描完成后,去保存目录里整理文件——PhotoRec会按文件类型分类,你可以通过文件名、内容筛选出需要的数据。
第四步:事后复盘,避免再踩坑
恢复数据后,一定要先把所有数据备份到安全的地方!之后再重新规划硬盘挂载:
- 不要直接把新硬盘挂载到/home,而是挂载到比如
/home/data,然后把原/home的内容迁移过去 - 或者用LVM把新硬盘加入卷组,扩容/home分区,这样更安全
内容的提问来源于stack exchange,提问作者sungjun cho
相关产品推荐
相关产品推荐

