Skip to content

上传和下载文件到开发机

AIStudio 支持在您的本地计算机和开发机之间传输文件。本节详细介绍了如何使用 scpsftp 将文件上传 AIStudio 的开发机,或开发机挂载的共享高性能存储,并提供一些实用的技巧,帮助您在传输大文件时保持连接稳定。

TIP

  • 如果仅需要操作共享高性能存储,建议您使用 AICoder 的进行文件传输。AICoder 为 CPU 实例,不会占用显卡资源。
  • 如果您更习惯使用图形化界面,可以参考教程使用 Filezilla 客户端 进行文件传输。但该方式仅支持通过开发机传输数据。

上传到只读目录

如有大量数据需要上传至租户共享高性能存储的 /datasets 只读目录,请联系无问芯穹工作人员。

获取开发机 SSH 地址

您可以从开发机详情页的 SSH 登录地址中获取下方所需的 IP 地址和端口号。详见 SSH 远程登录

使用 scp 上传和下载文件

scp(安全复制)是一种非交互式的文件传输工具,同样基于 SSH 协议。它适合快速传输单个文件或文件夹。

上传文件

上传文件到开发机的命令格式如下:

shell
scp -P port localfile username@ip:/remotefile

例如,用户 tom 将本地文件上传到开发机(Ubuntu)挂载的共享高性能存储目录 /mnt/tom

shell
scp -P 41294 ~/Desktop/v2.jpg tom@199.115.57.194:/mnt/tom

也可以上传到开发机本地存储 /home/tom(开发机的免费本地存储)。

下载文件

从开发机下载文件到本地的命令格式如下:

shell
scp -P port username@ip:/remotefile localfile

例如,用户 tom 将远程文件 v2.jpg 下载到本地的桌面:

shell
scp -P 41294 tom@199.115.57.194:/mnt/tom/v2.jpg ~/Desktop/v2.jpg

上传和下载文件夹

上传文件夹

shell
scp -P port -r 本地文件夹 username@ip:/远程文件夹

例如,用户 tom 将本地文件夹 myfolder 上传到远程的 /mnt/tom 目录:

shell
scp -P 41294 -r ~/Desktop/myfolder tom@199.115.57.194:/mnt/tom/myfolder

下载文件夹

shell
scp -P port -r username@ip:/remotedir localdir

例如,用户 tom 将远程文件夹 myfolder 下载到本地的桌面:

shell
scp -P 41294 -r tom@199.115.57.194:/mnt/tom/myfolder ~/Desktop/myfolder

创建远程目录并上传文件

由于 scp 无法直接创建目录,您可以组合使用 sshscp

shell
# 创建 newdir
ssh -p port username@ip "mkdir -p /remotedir/newdir"
# 上传到 newdir
scp -P port 本地文件 username@ip:/remotedir/newdir

例如:

shell
# 创建 newdir
ssh -p 41294 tom@199.115.57.194 "mkdir -p /mnt/tom/newdir"
# 上传到 newdir
scp -P 41294 ~/Desktop/v2.jpg tom@199.115.57.194:/mnt/tom/newdir

使用 sftp 上传和下载文件

sftp(安全文件传输协议)是一种交互式的文件传输工具,基于 SSH 协议。通过 sftp,您可以在本地和远程机器之间安全地传输文件。

建立 sftp 连接

连接到开发机的命令格式如下:

shell
sftp -P port username@ip

例如,Jane 从本地与 AIStudio 平台的开发机建立 SFTP 连接:

shell
sftp -P 41294 jane@199.115.57.194

上传文件

连接成功后,可以使用 put 命令上传文件:

shell
sftp> put localfile remotefile

例如,将本地文件 v2.png 上传到远程的 /mnt/jane/ 目录:

shell
# 执行 put 命令
sftp> put /Users/jane/Desktop/v2.png /mnt/jane/v2.png
# 打印执行结果
Uploading /Users/jane/Desktop/v2.png to /mnt/jane/v2.png
v2.png                                100% 1064KB  12.0MB/s   00:00

下载文件

使用 get 命令下载文件:

shell
sftp> get remotefile localfile

例如,将远程文件 v2.png 下载到本地的桌面:

shell
sftp> get /mnt/jane/v2.png /Users/jane/Desktop/v2.png

上传和下载文件夹

sftp 也支持传输整个文件夹,方法如下:

上传文件夹

shell
sftp> put -r localdir remotedir

下载文件夹

shell
sftp> get -r remotedir localdir

NOTE

使用 -r 选项递归地传输文件夹及其内容。

传输大文件的技巧

在传输大文件时,可以使用以下方法确保传输过程不会因网络中断或退出 shell 而中断:

使用 nohup&

使用 nohup 命令可以在退出 shell 后继续运行任务。将命令放在后台运行可以使用 &

上传大文件

shell
nohup scp -P port 本地大文件 username@ip:/远程文件 &

例如,用户 tom 将本地大文件 largefile.iso 上传到远程的 /mnt/tom 目录:

shell
nohup scp -P 41294 ~/Desktop/largefile.iso tom@199.115.57.194:/mnt/tom/largefile.iso &

下载大文件

shell
nohup scp -P port username@ip:/远程大文件 本地文件 &

例如,用户 tom 将远程大文件 largefile.iso 下载到本地的桌面:

shell
nohup scp -P 41294 tom@199.115.57.194:/mnt/tom/largefile.iso ~/Desktop/largefile.iso &

使用 screentmux

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

使用 screen

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

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

    shell
    scp -P port 本地文件 username@ip:/远程文件
  3. Ctrl+A 然后按 D 将会话分离。

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

    shell
    screen -r

使用 tmux

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

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

    shell
    scp -P port 本地文件 username@ip:/远程文件
  3. Ctrl+B 然后按 D 将会话分离。

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

    shell
    tmux attach-session

TIP

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

scpsftp 的对比

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

scp

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

优点:

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

缺点:

  • 不提供交互式文件管理

sftp

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

优点:

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

缺点:

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

TIP

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