如何优雅将数据从实验室远程服务器传输到Aladdin Workshop
目的
本教程旨在帮助你将 只能通过内网访问的实验室服务器上的数据 通过 终端命令(scp
或 rsync
)传输到 Aladdin 云端 Workshop 环境。
背景说明
在本地机器(称为 A),例如笔记本上使用 VSCode 的 Aladdin 插件,插件在登录账户、创建一个 Workshop 并连接后,会:
- 在本地机器上开启一个端口映射(例如
localhost:52680
),该端口映射将 Workshop 地址映射到本地端口; - 你可以通过该端口访问 Aladdin Workshop。
为了让局域网中的其他服务器(称为 B)能够访问这个端口并传输数据,我们需要将端口映射暴露到局域网中,便于 B 访问。
注:该教程使用的本地机器 A 是Ubuntu系统,Windows系统可以使用类似的操作。
✅ 步骤 1:在 A 上登录 Aladdin 插件并确认端口映射
1.1 登录 Aladdin 插件
- 在 A 机器上,确保已经通过 VSCode 的 Aladdin 插件 登录到 Aladdin 云环境。
- 登录后,创建 Workshop 并连接后,插件会自动为你创建一个本地端口映射(例如是
localhost:52680
),该信息可以在 SSH 配置文件中查找到,你可以通过该端口访问云端的 Workshop。
配置文件示例:
Host workshop_name.bj1
HostName localhost
Port 52680
User root
IdentityFile /home/USERNAME/.alaya/vscode-plugin/ssh/6097a13e-e86b-4b47-873a-33e488459eac
StrictHostKeyChecking no
UserKnownHostsFile NUL
1.2 验证端口映射
通过以下命令检查是否可以连接:
ssh workshop_name.bj1
如果成功连接,说明端口映射已经正常工作。
步骤 2:在 A 上将 localhost:52680
暴露为局域网端口
2.1 安装 socat
为了让 B 机器能够通过局域网访问 A 上的端口映射,你需要使用 socat
来将 localhost:52680
转发到 A 的局域网 IP 上。
在 A 上执行以下命令来安装 socat
:
sudo apt install socat # 如果还未安装 socat
2.2 使用 socat
映射端口
运行以下命令,把 A 机器的 localhost:52680
映射为局域网地址(假设 A 的局域网 IP 是 192.168.1.10
,你可以替换成实际 IP):
sudo socat TCP-LISTEN:9999,fork,reuseaddr TCP:localhost:52680
这会将 localhost:52680
映射为 192.168.1.10:9999
,其他局域网机器就可以通过这个 IP 和端口来访问 A 上的 Aladdin 插件。
步骤 3:将私钥复制到 B 机器
3.1 拷贝私钥
为了让 B 机器能够使用 SSH 连接到 A,你需要把用于连接 Aladdin 插件的 私钥 复制到 B 上。假设你的私钥路径为 ~/.alaya/vscode-plugin/ssh/6097a13e-e86b-4b47-873a-33e488459eac
,在 B 上执行以下命令:
scp ~/.alaya/vscode-plugin/ssh/6097a13e-e86b-4b47-873a-33e488459eac USERNAME@IP_ADDRESS_B:/home/USERNAME/.ssh/aladin_key
其中 USERNAME
是 B 机器的用户名,IP_ADDRESS_B
是 B 机器的 IP 地址。
3.2 设置权限
在 B 上,确保私钥文件的权限设置正确:
chmod 600 ~/.ssh/aladin_key
步骤 4:在 B 上配置 SSH 连接
4.1 编辑 ~/.ssh/config
在 B 上编辑 ~/.ssh/config
文件,添加如下配置:
Host workshop_name
HostName 192.168.1.10 # A 的局域网 IP, 根据自己的 IP 地址修改
Port 9999 # socat 映射的端口
User root
IdentityFile ~/.ssh/aladin_key
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
这会将 workshop_name
映射为可以通过 A 的局域网 IP 和映射端口访问的 Aladdin Workshop。
步骤 5:使用 scp
或 rsync
一键传输数据到 Aladdin Workshop
5.1 使用 scp
传输数据
你可以使用 scp
命令将数据从 B 传输到 A 上的 Aladdin Workshop:
scp -r ./local_data workshop_name:/root/workspace/dataset/
5.2 使用 rsync
传输数据(推荐)
rsync
更适合大文件和增量同步,推荐使用:
rsync -avz ./local_data/ workshop_name:/root/workspace/dataset/
这样你就可以高效地将数据从 B 机器 传输到 Aladdin Workshop 环境了。
rsync 需要在当前机器和目标机器都安装才能正常工作,可以
ssh
到Aladdin Workshop后使用apt update && apt install rsync
下载。
小贴士
事项 | 建议 |
---|---|
插件登录状态 | 必须保持 A 上的 Aladdin 插件登录,端口映射才有效 |
socat 映射 | 映射端口断开后需手动重启 |
使用 rsync | 对大数据集传输更高效,支持增量同步 |
结构图
[服务器 B]
scp/rsync -i key → workshop_name → A_IP:9999
↓
[VSCode 插件主机 A]
localhost:52680 ← 插件登录后映射
↓
[Aladdin 云端 Workshop]