AIStudio SSH 公钥管理,一处配置,处处可用AIStudio SSH 公钥管理,一处配置,处处可用 ,只为更佳开发体验如何配置
Skip to content

上传与下载文件

本节介绍如何使用命令行工具 scpsftp 与 AIStudio 的开发机传输文件。

开发机可读写以下位置的数据:

  • 开发机挂载的共享高性能存储,一般为开发机的 /mnt/public 目录。
  • 开发机挂载的云盘,一般为开发机的 /datadisk 目录。
  • 开发机的系统盘,为 / 分区挂载的文件系统。

TIP

读写共享高性能存储还可以使用免费的 AICoder。AICoder 为 CPU 实例,不会占用显卡资源。详见AICoder:上传与下载文件

获取开发机 SSH 地址

目前支持的本地数据传输方案都基于 SSH。您可以从开发机详情页的 SSH 登录地址中获取下方所需的 IP 地址和端口号。

NOTE

开发机支持 SSH 用户名/密码认证,也支持基于 SSH 密钥的认证。请提前确认可成功 SSH 远程登录开发机。如需帮助,请参考 SSH 远程登录

使用 scp 上传和下载文件

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

新手提示

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

上传文件

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

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

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

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

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

下载文件

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

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

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

shell
scp -P 41294 root@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 root@199.115.57.194:/mnt/tom/myfolder

下载文件夹

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

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

shell
scp -P 41294 -r root@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 root@199.115.57.194 "mkdir -p /mnt/tom/newdir"
# 上传到 newdir
scp -P 41294 ~/Desktop/v2.jpg root@199.115.57.194:/mnt/tom/newdir

使用 sftp 上传和下载文件

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

新手提示

上传、下载操作均需要在本地计算机运行命令(scp/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 localfolder remotefolder

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

shell
sftp> lpwd
Local working directory: /Users/janedoe/work

sftp> put -r ./public/elements /home/janedoe
Uploading ./public/elements/ to /home/janedoe/elements
Entering ./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 remotedir localdir

NOTE

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

传输大文件的技巧

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

使用 rsync 实现稳定传输

rsync 支持增量传输和断点续传功能,可有效地减少带宽使用和传输时间,非常适合传输大文件和大量数据的场景。

完整的示例命令如下,其中的 IP 地址和 SSH 端口来自开发机详情页。

shell
rsync -avzP --partial-dir=.rsync-partial -e "ssh -p 33260" dummyfile root@8.140.242.203:/root/

参考教程 使用 rsync 传输数据到开发机

TIP

对于长时间大量数据传输,推荐使用 AICoder,避免占用开发机及显卡。AICoder 已内置 rsync,操作详见AICoder:上传与下载文件

使用 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

tmuxscreen 是传输大文件时的理想辅助工具。关于 tmux 等后台运行工具的详细介绍,可参考教程 Linux 后台运行入门指南:掌握 nohup、tmux 和 screen

使用 nohup + & 实现后台运行

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

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

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

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

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

命令行工具对比

工具选择取决于具体需求。

场景一:传输包含数个大文件和多个小文件的文件夹。

特性rsyncscpsftp
增量传输只传输差异数据不支持不支持
断点续传支持,从中断处继续不支持支持,通过手动续传和偏移量设置实现
压缩支持,减少传输时间支持支持
文件权限保留支持支持支持
目录传输支持高效同步,适合大量文件支持递归传输(-r 选项)支持,通过交互命令传输
带宽利用高效,适合低带宽效率较低效率较低
灵活性提供多种选项,灵活性高简单,选项少支持基本操作

推荐:可使用 scp / sftp,但建议使用 rsync 传输数据到开发机。由于文件夹包含大量小文件和几个大文件,并且网络带宽有限,rsync 是最佳选择。它的增量传输和断点续传功能能够有效地减少带宽使用和传输时间。

场景二:传输单个大文件

特性rsyncscpsftp
增量传输只传输差异数据不支持不支持
断点续传支持,从中断处继续不支持支持,通过手动续传和偏移量设置实现
压缩支持,减少传输时间支持支持
文件权限保留支持支持支持
大文件传输高效,支持断点续传简单传输支持断点续传,通过手动续传和偏移量设置实现
带宽利用高效,适合低带宽效率较低效率较低
灵活性提供多种选项,灵活性高简单,选项少支持基本操作

推荐:对于单个大文件,如果可能中断,rsyncsftp 都是不错的选择。rsync 提供增量传输功能,而 sftp 需通过 reput 命令支持断点续传。

图形界面传输方案

  • 可参考教程使用 VS Code 远程开发,直接拖拽本地文件到左侧窗口,即可上传文件。
  • 可参考教程使用 Filezilla 客户端 进行文件传输。
  • 可参考教程安装 File Browser,支持通过 Web 界面轻松管理服务器上的文件。