如果你像我一样无意中把主机根目录移动到了某个子文件夹下,那么根据服务器是否断开的情形可以有以下两种方法挽救:
-
如果你还没断开服务器
可以参考如下两篇文章:
Linux下误移动根目录文件导致系统出现异常的解决方法
linux根目录被移动走了怎么办
把文件复制回来。注意32bit和64bit的区别。 -
如果你像我一样服务器已经被断开,此时已经无法连接远程主机,那么还有办法。
2.1 停止旧实例,参考卸载或挂载系统盘,卸载系统盘。
2.2 新建按量付费
的实例,区域选择原来主机的相同区域
2.2 类型选择最便宜的t6,基本费用3分钱/小时
2.3 磁盘选20G即可,选择和原来相同的操作系统。然后计费方式按照流量收费。因为我们基本在主机ssh操作,无需多少流量。
Note: 如果你没有余额,需要充值100元。停止按量收费实例24小时后可提现。
2.4 启动新实例,参考挂载数据盘把卸载下来的云磁盘挂载为数据盘。
2.5 ssh登陆新实例。
2.6fdisk -l
查看挂载的磁盘名称,我这里是/dev/vdb1
fdisk -l
磁盘 /dev/vda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0000974b
设备 Boot Start End Blocks Id System
/dev/vda1 * 2048 41943039 20970496 83 Linux
磁盘 /dev/vdb:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000aaa23
设备 Boot Start End Blocks Id System
/dev/vdb1 * 2048 83875364 41936658+ 83 Linux
2.7 mount磁盘,下面例子中/mnt
就是旧的磁盘根目录
mount /dev/vdb1 /mnt
2.8 将文件移动回/mnt
目录(即旧的磁盘根目录),比如我错误地把根目录移动到了/var/ftp/test
那么,使用如下命令:
mv /mnt/var/ftp/test/* /mnt/
但是可能提示:
mv:是否覆盖"/mnt/usr"? y
mv: 无法将"/mnt/var/ftp/test/usr" 移动至"/mnt/usr": 目录非空
使用cp命令保留权限复制即可:
cp -rfp /mnt/var/ftp/test/usr /mnt/
2.9 停止新实例
,新实例中卸载这个数据盘。
2.10 旧实例重新加载这个云盘,确认系统可以启动并登陆。
2.11 释放新实例配置避免收费
。
2.12 旧实例删除重复的/var/ftp/test/usr
即可(本文例子的路径,需要根据你的情况修改)。
本文SimonLiu原创,转载需注明来源。