2024-11-21 一站式 AI 平台生日大派对!2024-11-21 一站式 AI 平台生日大派对! 无问芯穹特别推出多项超值福利!立即参与
Skip to content

上传和下载文件

AICoder 支持通过跳板机(ssh-jumper.cloud.infini-ai.com)使用 scpsftp 上传和下载文件。下面将简要介绍如何使用这些工具进行文件传输。

TIP

我们推荐通过 AICoder 与共享高性能存储进行文件传输。共享高性能存储默认挂载在 /mnt/public 下。

前提条件

  • 您已经成功创建并启动了 AICoder 实例。
  • 您已经成功在 AICoder 实例中上传了您的 SSH 公钥。如需帮助,请参考教程添加 SSH 公钥指南

本地如何访问 AICoder 实例

NOTE

安全起见,AICoder 不会直接向公网暴露访问地址。我们设计了一种 SSH 跳转的解决方案,帮助您顺利连接到我们平台上的 AICoder 实例。

登录智算云平台,获取 AICoder 实例的 SSH 地址。打开 AICoder Shell 后,在窗口右上角点击密钥按钮,点击后出现如下弹窗:

alt text

AICoder 实例的 SSH 连接命令格式如下:

shell
ssh -J ssh-jumper.cloud.infini-ai.com username@aicoder_id

例如,用户 Jane Doe 的 SSH 连接命令为:

shell
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),不需要在开发机上运行命令。

shell
sftp -J ssh-jumper.cloud.infini-ai.com username@aicoder_id

例如,用户 Jane Doe 与 AICoder 平台建立 SFTP 连接:

shell
sftp -J ssh-jumper.cloud.infini-ai.com root@aic-c8lkg5b88mieqw6b

进入 SFTP 界面后,使用 put 上传文件:

shell
sftp> put localfile remotefile

例如,从本地上传文件到 AICoder:

shell
sftp> put /Users/janedoe/Desktop/v2.png /home/jane/

使用 get 下载文件:

shell
sftp> get remotefile localfile

例如,从 AICoder 下载文件到本地:

shell
sftp> get /home/jane/v2.png /Users/janedoe/Desktop

使用 sftp 上传和下载文件夹

SFTP 支持直接传输整个文件夹。以下是两种常用方法:

新手提示

上传、下载操作均需要在本地计算机运行命令(scp/sftp),不需要在开发机上运行命令。

方法一:使用 -r 选项

这是最直接的方法,可以递归地上传或下载文件夹及其内容。

上传文件夹(格式):

shell
sftp> put -r localdir /remote/path

效果:

/remote/path/
└── localdir/
    ├── file1.txt
    └── file2.txt

例如,用户 Jane Doe 需要将本地目录 /Users/janedoe/work/public/elements 上传到 AICoder 上的 /home/janedoe 路径下:

shell
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>

下载文件夹:

shell
sftp> get -r remotefolder localfolder

例如,用户 Jane Doe 需要将 AICoder 上的 /home/janedoe/myfolder 下载到本地目录 /Users/janedoe/Desktop/ 下。

shell
sftp> get -r /home/janedoe/myfolder /Users/janedoe/Desktop/myfolder

NOTE

使用 -r 选项时要小心,它会覆盖目标位置的现有文件。

方法二:使用多个命令

对于那些更熟悉单独的 SFTP 命令的用户,可以使用以下步骤:

上传文件夹:

shell
sftp> mkdir remotefolder
sftp> lcd localfolder
sftp> cd remotefolder
sftp> mput *

下载文件夹:

shell
sftp> lcd localfolder
sftp> cd remotefolder
sftp> mget *

NOTE

mputmget 命令支持通配符,可以用来传输多个文件。

两种方法都可以在 SFTP 交互式 shell 中直接使用,无需在建立连接时指定特殊选项。选择哪种方法取决于个人偏好和具体需求。

使用 scp 上传文件

通过跳板机上传文件到 AICoder 的命令格式如下:

新手提示

上传、下载操作均需要在本地计算机运行命令(scp/sftp),不需要在开发机上运行命令。

shell
scp -J ssh-jumper.cloud.infini-ai.com localfile username@aicoder_id:/remotefile

例如,用户 Jane Doe 将本地文件上传到 AICoder 的目录 /home/jane

shell
scp -J ssh-jumper.cloud.infini-ai.com ~/Desktop/v2.jpg root@aic-c8lkg5b88mieqw6b:/home/jane

使用 scp 下载文件

通过跳板机从 AICoder 下载文件到本地的命令格式如下:

新手提示

上传、下载操作均需要在本地计算机运行命令(scp/sftp),不需要在开发机上运行命令。

shell
scp -J ssh-jumper.cloud.infini-ai.com username@aicoder_id:/remotefile localfile

例如,用户 Jane Doe 将 AICoder 上的文件下载到本地目录 /Users/janedoe/Desktop

shell
scp -J ssh-jumper.cloud.infini-ai.com root@aic-c8lkg5b88mieqw6b:/home/jane/v2.jpg /Users/janedoe/Desktop

使用 scp 上传和下载文件夹

新手提示

上传、下载操作均需要在本地计算机运行命令(scp/sftp),不需要在开发机上运行命令。

上传文件夹到 AICoder:

shell
scp -r -J ssh-jumper.cloud.infini-ai.com localfolder username@aicoder_id:/remotefolder

例如,用户 Jane Doe 将本地文件夹上传到 AICoder 的目录 /home/jane

shell
scp -r -J ssh-jumper.cloud.infini-ai.com ~/Desktop/myfolder root@aic-c8lkg5b88mieqw6b:/home/jane

下载文件夹到本地:

shell
scp -r -J ssh-jumper.cloud.infini-ai.com username@aicoder_id:/remotefolder localfolder

例如,用户 Jane Doe 将 AICoder 上的文件夹下载到本地目录 /Users/janedoe/Desktop

shell
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 后继续运行任务。将命令放在后台运行可以使用 &

上传大文件

shell
nohup scp -J ssh-jumper.cloud.infini-ai.com localfile username@aicoder_id:/remotefile &

例如,用户 Jane Doe 将本地大文件上传到 AICoder 的目录 /home/jane

shell
nohup scp -J ssh-jumper.cloud.infini-ai.com ~/Desktop/largefile.iso root@aic-c8lkg5b88mieqw6b:/home/jane &

下载大文件

shell
nohup scp -J ssh-jumper.cloud.infini-ai.com username@aicoder_id:/remotefile localfile &

例如,用户 Jane Doe 将 AICoder 上的大文件下载到本地目录 /Users/janedoe/Desktop

shell
nohup scp -J ssh-jumper.cloud.infini-ai.com root@aic-c8lkg5b88mieqw6b:/home/jane/largefile.iso /Users/janedoe/Desktop &

使用 screentmux

screentmux 是两个强大的终端复用器,可以保持会话在后台运行,即使连接断开也不会中断传输任务。

使用 screen

  1. 启动一个新的 screen 会话:

    shell
    screen
  2. screen 会话中执行 scp 命令:

    shell
    scp -J ssh-jumper.cloud.infini-ai.com localfile username@aicoder_id:/remotefile
  3. Ctrl+A 然后按 D 将会话分离。

  4. 要重新连接到 screen 会话:

    shell
    screen -r

使用 tmux

  1. 启动一个新的 tmux 会话:

    shell
    tmux
  2. tmux 会话中执行 scp 命令:

    shell
    scp -J ssh-jumper.cloud.infini-ai.com localfile username@aicoder_id:/remotefile
  3. Ctrl+B 然后按 D 将会话分离。

  4. 要重新连接到 tmux 会话:

    shell
    tmux attach-session

TIP

screentmux 是传输大文件的理想工具,可以确保文件传输任务在连接断开时继续运行。

常见问题

如何选择 scpsftp

选择合适的工具取决于具体需求:

scp

scp 更适合快速、单次的文件或文件夹传输。它的命令简单直接,非常适合需要一次性上传或下载大量数据的用户。

优点:

  • 简单的命令结构
  • 支持递归复制文件夹(-r 选项)
  • 适合大文件传输

缺点:

  • 不提供交互式文件管理

sftp

sftp 更适合需要对文件进行频繁操作或管理的用户。它提供了一个交互式 shell,可以方便地在远程和本地之间导航和传输文件。

优点:

  • 提供交互式文件管理
  • 支持部分文件传输命令(例如 putgetmputmget
  • 适合小文件和文件夹的传输

缺点:

  • 命令稍复杂
  • 对于大文件传输可能不如 scp 高效

TIP

如果您只是需要快速地上传或下载文件夹,使用 scp 会更方便。如果您需要频繁地管理和传输文件,sftp 会更适合您的需求。