我必须将 Linux Ubuntu VM 转移到另一个 Linux Ubuntu VM。出于安全原因,我只能将文件转移并重新安装到新 VM。(我无法将磁盘 VM 复制到另一个 VM......)。
我打算:将文件夹 /home/ 压缩成一个文件。将文件复制粘贴到新的虚拟机中。
它能对我已经通过 apt-get 安装的程序起作用吗?我会遇到什么问题?
编辑:这是针对具有不同类型安装的服务器:CUDA,Web 服务器,JVM 和 Python 以及 DOS2UNIX,......
答案1
标题具有误导性,您不是在传输虚拟机,只是试图重建一个有点等效的机器(甚至不需要是虚拟机)。
如果不知道您如何使用虚拟机,就很难回答这个问题。它是 Web 服务器吗?还是您只是一台最终用户机器?对于服务器,很多东西都保存在 /var 中。程序文件位于 /usr 中,但您很难正确保存和恢复它,因为它包含大量链接,并且您必须为软件包安装程序恢复匹配的已安装软件信息。
对于基本的最终用户机器,您将:
创建您明确安装的软件包的列表:
comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u)
(这仅列出了顶级包,而不是它们的依赖项)
- 注销您的用户(或至少退出图形桌面)
- 复制 /home/{用户}
- 您可能需要保留 /etc 的副本以供参考(但不要在新机器上盲目恢复它)
另一台机器:
- 创建合适的用户(更重要的是它具有相同的 UID 和名称)(这通常在安装时完成)
- 重新安装缺失的软件包
- 恢复 /home/{user} (从命令提示符)
那你就可以走了。
如果它是一个服务器,/var 的某些部分也会有用,但具体用哪些部分取决于所使用的软件(有些最好不要作为文件传输(例如 MySQL 数据)。