You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

仅拥有Ubuntu服务器文件,如何在Virtual Box中恢复VPS系统?

把Ubuntu Server 16.04 VPS全文件备份恢复到VirtualBox本地虚拟机的完整指南

我帮你一步步搞定这个恢复操作,核心就是把备份的系统文件放到VirtualBox的虚拟磁盘里,再修复引导和配置,让它能正常启动。下面是详细步骤:

一、先把准备工作做足

  • 确保你已经下载并解压好VPS的全文件备份(就是包含bin、boot、etc那些目录的压缩包)
  • 安装好最新稳定版的VirtualBox,避免兼容性坑
  • 下载一个Ubuntu 16.04 Server的安装镜像(用来当救援盘修复引导,必须和原系统版本一致)
  • 本地磁盘留够空间,至少比原VPS系统实际占用的大20%,避免不够用

二、创建VirtualBox虚拟机的基础框架

  1. 打开VirtualBox,点「新建」,给虚拟机起个名字(比如“Recovered Ubuntu 16.04”),类型选「Linux」,版本选「Ubuntu (64-bit)」(原VPS是32位就选对应版本)
  2. 分配内存:尽量和原VPS一致,实在不行至少1GB(Ubuntu Server 16.04最低要512MB,但恢复时需要更多内存)
  3. 创建虚拟硬盘:
    • 选「创建虚拟硬盘现在」,下一步
    • 硬盘类型选「VDI(VirtualBox磁盘镜像)」,下一步
    • 存储类型选「动态分配」(省空间)或者「固定大小」(性能更好),看你需求
    • 设置硬盘大小:一定要比原VPS系统占用的空间大,比如原VPS用了20GB,就设25GB以上,选好存储位置后点创建

三、把备份文件复制到虚拟硬盘里

这一步需要把虚拟硬盘挂载到本地系统,再把备份文件拷进去,不同系统操作不一样:

如果本地是Linux/macOS

  1. 在VirtualBox里找到刚创建的虚拟机,右键「设置」→「存储」,记下虚拟硬盘的路径(比如Linux下可能是~/VirtualBox VMs/Recovered Ubuntu 16.04/Recovered Ubuntu 16.04.vdi
  2. 建个临时挂载目录:sudo mkdir /mnt/vbox_disk
  3. 挂载虚拟硬盘:
    • Linux:先用sudo fdisk -l /path/to/your.vdi(GPT分区用gdisk)找到主分区(一般是/dev/loopXp1),然后sudo mount /dev/loopXp1 /mnt/vbox_disk;如果是整个磁盘没分区,直接挂/dev/loopX
    • macOS:用hdiutil attach -readonly /path/to/your.vdi,然后把对应的分区挂载到/mnt
  4. 复制备份文件:sudo cp -a /path/to/your/backup/* /mnt/vbox_disk/-a参数一定要加!它会保留文件权限、所有者、时间戳,这对系统正常运行至关重要)
  5. 复制完卸载磁盘:sudo umount /mnt/vbox_disk

如果本地是Windows

  1. 下载安装「DiskInternals Linux Reader」(免费工具,能直接读取EXT4分区)或者「VirtualBox Disk Utility」
  2. 打开工具,找到你的VDI文件,挂载里面的EXT4分区
  3. 用管理员权限打开文件管理器,把备份的所有文件(包括隐藏文件)复制到挂载的分区根目录,覆盖原有的空文件(如果有的话)
  4. 复制完成后卸载虚拟硬盘

四、修复系统引导和配置(最关键的一步)

直接复制文件后虚拟机大概率启动不了,得用Ubuntu安装镜像做救援:

  1. 在VirtualBox的虚拟机设置里,「存储」→「控制器: IDE」,点「添加光盘」,选择下载好的Ubuntu 16.04 Server镜像
  2. 启动虚拟机,开机时按F12(或者VirtualBox提示的启动菜单键),选从光盘启动
  3. 进入安装界面后,选「Rescue a broken system」(Server版的救援模式,直接选这个就行)
  4. 救援模式会自动扫描磁盘,找到我们恢复的系统分区,选择它作为「/」分区挂载,然后进入shell
  5. 修复GRUB引导:
    • 先挂载必要的系统目录:
      mount --bind /dev /mnt/dev
      mount --bind /proc /mnt/proc
      mount --bind /sys /mnt/sys
      
    • 切换到恢复的系统环境:chroot /mnt
    • 重新安装GRUB到虚拟硬盘:grub-install /dev/sda(注意是/dev/sda,不是分区,GRUB要装到磁盘的MBR)
    • 更新GRUB配置:update-grub
  6. 调整网络配置(可选,但建议做):
    原VPS的网络配置是针对服务商的,VirtualBox默认用NAT,所以改成动态获取IP更方便:
    编辑/etc/network/interfaces,确保内容类似:
    auto lo
    iface lo inet loopback
    
    auto enp0s3
    iface enp0s3 inet dhcp
    
    这里的enp0s3是VirtualBox默认的网卡名,如果不一样,用ip addr查看实际名称
  7. 退出chroot:exit,然后卸载挂载的目录:umount /mnt/dev /mnt/proc /mnt/sys /mnt,重启虚拟机,记得把光盘镜像移除

五、验证系统是否正常

重启后如果能进入Ubuntu Server 16.04的登录界面,就成功一大半了,再做几个验证:

  • 检查原VPS的用户账号是否存在(比如root或你的普通用户)
  • 运行df -h看磁盘空间是否正常
  • 启动原VPS上的服务(比如nginx、MySQL),测试能不能正常运行
  • ping一下百度,看看网络能不能正常连接

小提示:如果恢复后出现权限问题,大概率是复制文件时没保留权限,回到救援模式运行chown -R root:root /mnt(针对系统目录),或者给对应文件设置正确的所有者就行。

内容的提问来源于stack exchange,提问作者Alexander Ostapenko

火山引擎 最新活动