前言
最近要使用 GPU 服务器做实验,可惜的是,有网络连接的服务器显卡旧,算力不够;显卡较新的机器没有联网。于是有需求将旧机器上配置好的 conda 环境迁移至新机器。网上给的默认方法生成 yaml 文件迁移等 需要联网,只有直接把库文件都拷贝过去才不需要网络。下面记录一下迁移过程。
备注:请确保机器 B 已经安装 CUDA 等必要环境,以及系统架构(amd64 etc.)与机器A一致。
正文
下文中,旧机器(可以联网的机器)称为机器A,不能联网的目标机器称为机器B。
首先在机器 B 中需要先安装 conda。这里 conda 的安装不做赘述,我使用的是 Miniconda 3。
安装过程在另一篇博客中有记录。
scp -rP 30724 ~/miniconda3/ root@10.201.200.199:/root/tmp_miniconda3/
在主机 A 上执行类似上面的命令,当然要做一些修改。
scp 命令是远程拷贝,首先要有机器 B 的 ssh 权限,-rP 后面的数字是 ssh 连接的端口号,默认是 22;假设主机 A 上 miniconda 的安装目录为 "~/miniconda3",如果不是修改为你的安装路径;将 root 修改为使用主机 B 的用户名,10.201.200.199 修改为机器 B 的 IP 地址,IP地址冒号后面的路径修改为你希望拷贝到的目的路径。
执行后会提醒输入 机器 B 指定用户的 password。输入并回车后就可以看到开始拷贝。大致的效果如下图。
滚动的屏幕可以让你有自己是 hacker 的错觉(
这里其实是将所有的 env 都迁移过去了,如果细致到某一个 env,可能就要细节很多了,但是我这边就两个 envs,所以就不做细致考究了,直接大力出奇迹把 miniconda3 目录都扔过去覆盖。具体时间取决于 AB 两台机器之间的网络速度以及库的大小。
12万个文件,共计 8 GB,千兆网线连接,传输用时 1 小时2分钟。
拷贝完,这里我简单将过去的 miniconda 备份了一下,其实不用,反正可以重新安装。如果不重命名的话,记得用 rm 命令删掉,这样干净一点不容易冲突。
mv ~/miniconda3/ ~/miniconda3_backup/
最后一步,将拷贝来的 conda 重命名为 miniconda。
mv /root/tmp_miniconda3/ ~/miniconda3
考虑到现在使用的 shell 也在使用 conda,使用命令 exit 退出重新登陆一下。
重新登陆后使用下面的命令检查环境,然后使用 conda activate 激活环境,至此迁移结束。
conda info -e