上传和下载文件
AICoder 支持通过跳板机(ssh-jumper.cloud.infini-ai.com
)使用 scp
和 sftp
上传和下载文件。下面将简要介绍如何使用这些工具进行文件传输。
TIP
我们推荐通过 AICoder 与共享高性能存储进行文件传输。共享高性能存储默认挂载在 /mnt/public
下。
前提条件
- 您已经成功创建并启动了 AICoder 实例。
- 您已经成功在 AICoder 实例中上传了您的 SSH 公钥。如需帮助,请参考教程添加 SSH 公钥指南。
本地如何访问 AICoder 实例
NOTE
安全起见,AICoder 不会直接向公网暴露访问地址。我们设计了一种 SSH 跳转的解决方案,帮助您顺利连接到我们平台上的 AICoder 实例。
登录智算云平台,获取 AICoder 实例的 SSH 地址。打开 AICoder Shell 后,在窗口右上角点击密钥按钮,点击后出现如下弹窗:
AICoder 实例的 SSH 连接命令格式如下:
ssh -J ssh-jumper.cloud.infini-ai.com username@aicoder_id
例如,用户 Jane Doe 的 SSH 连接命令为:
ssh -J ssh-jumper.cloud.infini-ai.com root@aic-c8lkg5b88mieqw6b
root
为默认 SSH 登录用户名(部分旧版实例展示为非 root 普通用户名,请重启)。aic-c8lkg5b88mieqw6b
是 AICoder 实例的 ID。请记录您的用户名与实例 ID(username@aicoder_id
),在后续的文件传输过程中,我们会使用该字符串代表需要连接的 AICoder 实例。
TIP
- 即使您重置、重启 AICoder 实例,实例 ID 仍保持不变,因此您无需担心连接地址变更。
- 但是,如果您在不同可用区打开 AICoder,您会注意到 AICoder 实例的 ID 并不相同。一般情况下,租户的资源池均在同一个可用区。
使用 sftp
上传和下载文件
通过跳板机建立 sftp
连接的命令格式如下:
新手提示
上传、下载操作均需要在本地计算机运行命令(scp
/sftp
),不需要在开发机上运行命令。
sftp -J ssh-jumper.cloud.infini-ai.com username@aicoder_id
例如,用户 Jane Doe 与 AICoder 平台建立 SFTP 连接:
sftp -J ssh-jumper.cloud.infini-ai.com root@aic-c8lkg5b88mieqw6b
进入 SFTP 界面后,使用 put
上传文件:
sftp> put localfile remotefile
例如,从本地上传文件到 AICoder:
sftp> put /Users/janedoe/Desktop/v2.png /home/jane/
使用 get
下载文件:
sftp> get remotefile localfile
例如,从 AICoder 下载文件到本地:
sftp> get /home/jane/v2.png /Users/janedoe/Desktop
使用 sftp
上传和下载文件夹
SFTP 支持直接传输整个文件夹。以下是两种常用方法:
新手提示
上传、下载操作均需要在本地计算机运行命令(scp
/sftp
),不需要在开发机上运行命令。
方法一:使用 -r
选项
这是最直接的方法,可以递归地上传或下载文件夹及其内容。
上传文件夹(格式):
sftp> put -r localdir /remote/path
效果:
/remote/path/
└── localdir/
├── file1.txt
└── file2.txt
例如,用户 Jane Doe 需要将本地目录 /Users/janedoe/work/public/elements
上传到 AICoder 上的 /home/janedoe
路径下:
sftp> lpwd
Local working directory: /Users/janedoe/work
sftp> put -r ./docs/public/elements /home/janedoe
Uploading ./docs/public/elements/ to /home/janedoe/elements
Entering ./docs/public/elements/
web-components.min.css 100% 289KB 20.1MB/s 00:00
web-components.min.js 100% 2152KB 20.5MB/s 00:00
api-reference.css 100% 9840 1.9MB/s 00:00
sftp> ls /home/janedoe
/home/janedoe/elements
sftp>
下载文件夹:
sftp> get -r remotefolder localfolder
例如,用户 Jane Doe 需要将 AICoder 上的 /home/janedoe/myfolder
下载到本地目录 /Users/janedoe/Desktop/
下。
sftp> get -r /home/janedoe/myfolder /Users/janedoe/Desktop/myfolder
NOTE
使用 -r
选项时要小心,它会覆盖目标位置的现有文件。
方法二:使用多个命令
对于那些更熟悉单独的 SFTP 命令的用户,可以使用以下步骤:
上传文件夹:
sftp> mkdir remotefolder
sftp> lcd localfolder
sftp> cd remotefolder
sftp> mput *
下载文件夹:
sftp> lcd localfolder
sftp> cd remotefolder
sftp> mget *
NOTE
mput
和 mget
命令支持通配符,可以用来传输多个文件。
两种方法都可以在 SFTP 交互式 shell 中直接使用,无需在建立连接时指定特殊选项。选择哪种方法取决于个人偏好和具体需求。
使用 scp
上传文件
通过跳板机上传文件到 AICoder 的命令格式如下:
新手提示
上传、下载操作均需要在本地计算机运行命令(scp
/sftp
),不需要在开发机上运行命令。
scp -J ssh-jumper.cloud.infini-ai.com localfile username@aicoder_id:/remotefile
例如,用户 Jane Doe 将本地文件上传到 AICoder 的目录 /home/jane
:
scp -J ssh-jumper.cloud.infini-ai.com ~/Desktop/v2.jpg root@aic-c8lkg5b88mieqw6b:/home/jane
使用 scp
下载文件
通过跳板机从 AICoder 下载文件到本地的命令格式如下:
新手提示
上传、下载操作均需要在本地计算机运行命令(scp
/sftp
),不需要在开发机上运行命令。
scp -J ssh-jumper.cloud.infini-ai.com username@aicoder_id:/remotefile localfile
例如,用户 Jane Doe 将 AICoder 上的文件下载到本地目录 /Users/janedoe/Desktop
:
scp -J ssh-jumper.cloud.infini-ai.com root@aic-c8lkg5b88mieqw6b:/home/jane/v2.jpg /Users/janedoe/Desktop
使用 scp
上传和下载文件夹
新手提示
上传、下载操作均需要在本地计算机运行命令(scp
/sftp
),不需要在开发机上运行命令。
上传文件夹到 AICoder:
scp -r -J ssh-jumper.cloud.infini-ai.com localfolder username@aicoder_id:/remotefolder
例如,用户 Jane Doe 将本地文件夹上传到 AICoder 的目录 /home/jane
:
scp -r -J ssh-jumper.cloud.infini-ai.com ~/Desktop/myfolder root@aic-c8lkg5b88mieqw6b:/home/jane
下载文件夹到本地:
scp -r -J ssh-jumper.cloud.infini-ai.com username@aicoder_id:/remotefolder localfolder
例如,用户 Jane Doe 将 AICoder 上的文件夹下载到本地目录 /Users/janedoe/Desktop
:
scp -r -J ssh-jumper.cloud.infini-ai.com root@aic-c8lkg5b88mieqw6b:/home/jane/myfolder /Users/janedoe/Desktop
NOTE
使用 -r
选项递归地复制整个文件夹。
传输大文件
NOTE
在传输大文件前,请确保使用正确的 aicoder_id
。在租户在多个可用区均有资源池的情况下,一个用户可能有多个 AICoder 实例。
传输大文件时,建议将传输过程在后台运行,以避免因退出当前 shell 而中断传输。下面是一些实现方法。
使用 nohup
和 &
使用 nohup
命令可以在退出 shell 后继续运行任务。将命令放在后台运行可以使用 &
。
上传大文件
nohup scp -J ssh-jumper.cloud.infini-ai.com localfile username@aicoder_id:/remotefile &
例如,用户 Jane Doe 将本地大文件上传到 AICoder 的目录 /home/jane
:
nohup scp -J ssh-jumper.cloud.infini-ai.com ~/Desktop/largefile.iso root@aic-c8lkg5b88mieqw6b:/home/jane &
下载大文件
nohup scp -J ssh-jumper.cloud.infini-ai.com username@aicoder_id:/remotefile localfile &
例如,用户 Jane Doe 将 AICoder 上的大文件下载到本地目录 /Users/janedoe/Desktop
:
nohup scp -J ssh-jumper.cloud.infini-ai.com root@aic-c8lkg5b88mieqw6b:/home/jane/largefile.iso /Users/janedoe/Desktop &
使用 screen
或 tmux
screen
和 tmux
是两个强大的终端复用器,可以保持会话在后台运行,即使连接断开也不会中断传输任务。
使用 screen
启动一个新的
screen
会话:shellscreen
在
screen
会话中执行scp
命令:shellscp -J ssh-jumper.cloud.infini-ai.com localfile username@aicoder_id:/remotefile
按
Ctrl+A
然后按D
将会话分离。要重新连接到
screen
会话:shellscreen -r
使用 tmux
启动一个新的
tmux
会话:shelltmux
在
tmux
会话中执行scp
命令:shellscp -J ssh-jumper.cloud.infini-ai.com localfile username@aicoder_id:/remotefile
按
Ctrl+B
然后按D
将会话分离。要重新连接到
tmux
会话:shelltmux attach-session
TIP
screen
或 tmux
是传输大文件的理想工具,可以确保文件传输任务在连接断开时继续运行。
常见问题
如何选择 scp
与 sftp
选择合适的工具取决于具体需求:
scp
scp
更适合快速、单次的文件或文件夹传输。它的命令简单直接,非常适合需要一次性上传或下载大量数据的用户。
优点:
- 简单的命令结构
- 支持递归复制文件夹(
-r
选项) - 适合大文件传输
缺点:
- 不提供交互式文件管理
sftp
sftp
更适合需要对文件进行频繁操作或管理的用户。它提供了一个交互式 shell,可以方便地在远程和本地之间导航和传输文件。
优点:
- 提供交互式文件管理
- 支持部分文件传输命令(例如
put
、get
、mput
、mget
) - 适合小文件和文件夹的传输
缺点:
- 命令稍复杂
- 对于大文件传输可能不如
scp
高效
TIP
如果您只是需要快速地上传或下载文件夹,使用 scp
会更方便。如果您需要频繁地管理和传输文件,sftp
会更适合您的需求。