上传和下载文件到开发机
AIStudio 支持在您的本地计算机和开发机之间传输文件。本节详细介绍了如何使用 scp
或 sftp
将文件上传 AIStudio 的开发机,或开发机挂载的共享高性能存储,并提供一些实用的技巧,帮助您在传输大文件时保持连接稳定。
TIP
- 如果仅需要操作共享高性能存储,建议您使用 AICoder 的进行文件传输。AICoder 为 CPU 实例,不会占用显卡资源。
- 如果您更习惯使用图形化界面,可以参考教程使用 Filezilla 客户端 进行文件传输。但该方式仅支持通过开发机传输数据。
上传到只读目录
如有大量数据需要上传至租户共享高性能存储的 /datasets
只读目录,请联系无问芯穹工作人员。
获取开发机 SSH 地址
您可以从开发机详情页的 SSH 登录地址中获取下方所需的 IP 地址和端口号。详见 SSH 远程登录。
使用 scp
上传和下载文件
scp
(安全复制)是一种非交互式的文件传输工具,同样基于 SSH 协议。它适合快速传输单个文件或文件夹。
上传文件
上传文件到开发机的命令格式如下:
scp -P port localfile username@ip:/remotefile
例如,用户 tom 将本地文件上传到开发机(Ubuntu)挂载的共享高性能存储目录 /mnt/tom
:
scp -P 41294 ~/Desktop/v2.jpg tom@199.115.57.194:/mnt/tom
也可以上传到开发机本地存储 /home/tom
(开发机的免费本地存储)。
下载文件
从开发机下载文件到本地的命令格式如下:
scp -P port username@ip:/remotefile localfile
例如,用户 tom 将远程文件 v2.jpg
下载到本地的桌面:
scp -P 41294 tom@199.115.57.194:/mnt/tom/v2.jpg ~/Desktop/v2.jpg
上传和下载文件夹
上传文件夹
scp -P port -r 本地文件夹 username@ip:/远程文件夹
例如,用户 tom 将本地文件夹 myfolder
上传到远程的 /mnt/tom
目录:
scp -P 41294 -r ~/Desktop/myfolder tom@199.115.57.194:/mnt/tom/myfolder
下载文件夹
scp -P port -r username@ip:/remotedir localdir
例如,用户 tom 将远程文件夹 myfolder
下载到本地的桌面:
scp -P 41294 -r tom@199.115.57.194:/mnt/tom/myfolder ~/Desktop/myfolder
创建远程目录并上传文件
由于 scp
无法直接创建目录,您可以组合使用 ssh
和 scp
:
# 创建 newdir
ssh -p port username@ip "mkdir -p /remotedir/newdir"
# 上传到 newdir
scp -P port 本地文件 username@ip:/remotedir/newdir
例如:
# 创建 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
连接
连接到开发机的命令格式如下:
sftp -P port username@ip
例如,Jane 从本地与 AIStudio 平台的开发机建立 SFTP 连接:
sftp -P 41294 jane@199.115.57.194
上传文件
连接成功后,可以使用 put
命令上传文件:
sftp> put localfile remotefile
例如,将本地文件 v2.png
上传到远程的 /mnt/jane/
目录:
# 执行 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
命令下载文件:
sftp> get remotefile localfile
例如,将远程文件 v2.png
下载到本地的桌面:
sftp> get /mnt/jane/v2.png /Users/jane/Desktop/v2.png
上传和下载文件夹
sftp
也支持传输整个文件夹,方法如下:
上传文件夹
sftp> put -r localdir remotedir
下载文件夹
sftp> get -r remotedir localdir
NOTE
使用 -r
选项递归地传输文件夹及其内容。
传输大文件的技巧
在传输大文件时,可以使用以下方法确保传输过程不会因网络中断或退出 shell 而中断:
使用 nohup
和 &
使用 nohup
命令可以在退出 shell 后继续运行任务。将命令放在后台运行可以使用 &
。
上传大文件
nohup scp -P port 本地大文件 username@ip:/远程文件 &
例如,用户 tom 将本地大文件 largefile.iso
上传到远程的 /mnt/tom
目录:
nohup scp -P 41294 ~/Desktop/largefile.iso tom@199.115.57.194:/mnt/tom/largefile.iso &
下载大文件
nohup scp -P port username@ip:/远程大文件 本地文件 &
例如,用户 tom 将远程大文件 largefile.iso
下载到本地的桌面:
nohup scp -P 41294 tom@199.115.57.194:/mnt/tom/largefile.iso ~/Desktop/largefile.iso &
使用 screen
或 tmux
screen
和 tmux
是两个强大的终端复用器,可以保持会话在后台运行,即使连接断开也不会中断传输任务。
使用 screen
启动一个新的
screen
会话:shellscreen
在
screen
会话中执行scp
命令:shellscp -P port 本地文件 username@ip:/远程文件
按
Ctrl+A
然后按D
将会话分离。要重新连接到
screen
会话:shellscreen -r
使用 tmux
启动一个新的
tmux
会话:shelltmux
在
tmux
会话中执行scp
命令:shellscp -P port 本地文件 username@ip:/远程文件
按
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
会更适合您的需求。