Linux 使用 cp 命令导致挂载点被覆盖问题记录
我在linux上运行一个cp命令 cp -r /home/home_bk/* /home 此时为什么我找不到home_bk目录了? home_bk 目录是挂载在 /dev/sda1 上面 home 目录是挂载在 /dev/sdc1 上面
你现在的情况:
/home已经挂载到 /dev/sdc1/home/home_bk挂载到 /dev/sda1
你执行了:
cp -r /home/home_bk/* /home
结果:home_bk 消失了
为什么?
因为:
你把 /dev/sda1 里的所有内容,全部复制覆盖到了 /dev/sdc1 的 /home 目录下。
同时,原来的 /home/home_bk 这个「挂载点目录」被覆盖删除了!
核心原理(超级简单)
-
/home现在是 新分区 /dev/sdc1 -
/home/home_bk是 旧分区 /dev/sda1 的挂载点 -
你执行
cp -r /home/home_bk/* /home→ 把 sda1 里的所有文件
全部拷贝到 sdc1 的 /home 下
-
拷贝过程中,原来的 /home/home_bk 目录被删掉 / 覆盖了
-
所以挂载点没了 → 看起来 home_bk 消失了
你的 home_bk 数据并没有丢!
/dev/sda1 里的数据完好无损!
只是 /home 下的挂载点目录 home_bk 被覆盖删除了
立刻恢复 home_bk(一步一步照做)
1. 重新创建挂载点目录
mkdir -p /home/home_bk
2. 重新挂载 sda1 到 home_bk
mount /dev/sda1 /home/home_bk
3. 查看是否恢复
ls /home/home_bk
✅ 马上就能看到所有数据
以后绝对不能再这样复制!
错误命令(会删挂载点):
cp -r /home/home_bk/* /home
正确复制(不破坏挂载点):
cp -r /home/home_bk/. /home
或者
rsync -av /home/home_bk/ /home/
最终总结(最关键)
- home_bk 数据没丢,都在 /dev/sda1 里
- 只是挂载点目录被 cp 命令覆盖删除了
- 重建目录 + 重新挂载 → 立刻恢复