最近更新时间:2025-09-05 22:14:38
为了方便用户上传文件到文件共享服务实例,或者从文件共享服务实例下载文件,我们设计了SFTP服务。通过SFTP服务,我们可以从windows系统、Linux系统、MacOS系统上传或下载文件,同时有丰富的上传工具可以使用,包括命令行工具和可视化的图形界面客户端。
SFTP 服务本身不收取费用,使用 SFTP 服务进行数据传输时,上传免费,下载会产生流量费用,详细收费标准,请参照实际账单。
SFTP服务带宽限制为400Mbps
上传文件功能目前仅支持经典网络的文件共享服务实例
进入边缘节点计算文件共享服务控制台。
找到目标实例,点击列表操作列【上传文件】按钮。
点击【启动服务】文字链(未启动状态可见)
根据弹窗内容进行配置,点击【确认】启动服务。
配置项说明如下:
配置项 | 说明 |
|---|---|
登录方式 | 支持密钥和密码,推荐使用密钥。 密钥可通过 密码的复杂度要求:大写、小写、数字、特殊字符占三种,长度为8-32位;特殊字符为!@#$%^&*()_+-= |
用户名 | root |
公钥 | 可通过“cat ~/.ssh/id_rsa.pub”命令获取公钥信息 |
使用时长 | 可选1小时、12小时、1天、3天、7天 |
为了数据安全起见,SFTP服务开启后长时间不用,可关闭SFTP。
进入边缘节点计算文件共享服务控制台。
找到目标实例,点击列表操作列【上传文件】按钮。
点击【关闭服务】文字链(运行中状态可见)
确认弹窗信息,点击【确认】按钮关闭服务。
SFTP是SSH协议的子协议,由于SSH的普适性,SFTP是文件传输领域事实上的标准之一。SFTP久经考验,功能强大。其被预装或原生支持Linux、Windows、MacOS等多种平台,并能提供命令行、可交互界面、GUI等多种交互形态。用户可以轻松获取SFTP客户端,以满足用户绝大多数场景下对文件的管理、传输等需要。
下述内容提供了在多个场景使用不同工具的示例,包含:
◦ 基于sftp命令的原生交互式的演示
◦ 基于scp命令的一键式命令行的演示
◦ 基于rclone工具的高级命令行传输方式的演示
◦ 基于filezilla图形化界面的文件管理及传输演示
每种工具的优缺点如下,可按实际需求选用传输工具:
工具 | 传输效率 | 优点 | 缺点 |
|---|---|---|---|
sftp | 中等 | 跨平台兼容性高 交互式操作 | 大文件效率低 无增量同步 无断点续传 |
curl | 中等 | 跨平台兼容性高 | 不支持目录上传 |
scp | 较快 | 命令极简:单命令完成传输 开箱即用(无需额外配置) | 无文件管理 无断点续传 |
rclone | 高效 | 断点续传 增量同步 加密传输 | 需掌握 cli 命令 |
filezilla | 中等 | 图形化界面 断点续传 目录同步 | 不适合自动化脚本 |
sftp命令是各Linux系统原生自带的命令,可以支持交互式的远程文件管理、传输。
连接服务器,在当前终端上输入以下命令进行连接
sftp [选项] [用户名@]主机名[:路径]示例:
例如使用user连接公网1.2.3.4的文件共享服务时,可以用以下命令:
sftp user@1.2.3.4 # 使用默认端口22连接成功后,进入交互界面,例如:
localhost ~ % sftp user@1.2.3.4
user@1.2.3.4's password:
Connected to 1.2.3.4
sftp>使用SFTP连接时指定端口
如果您修改了SFTP服务端口,在连接共享文件系统时可以通过-P参数指定SFTP服务端口,命令如下:
sftp -P 2222 user@1.2.3.4 # 指定端口2222使用SFTP连接共享文件系统时指定私钥文件(密钥对认证)
如果您为共享文件系统绑定了密钥对,sftp将在当前的home目录下自动匹配相应私钥,也可在连接共享文件系统时通过-oIdentityfile参数指定私钥文件,命令如下:
sftp -oIdentityFile=<私钥文件路径> <用户名>@<主机名>私钥须妥善保管避免泄露
上传文件
从本地上传文件或整个目录到共享文件系统:
#上传单个文件
sftp> put <本地文件> <共享文件系统目录>
#上传整个目录
sftp> put -r <本地文件> <共享文件系统目录>下载文件
从共享文件系统下载文件或整个目录到本地:
#下载单个文件
sftp> get <共享文件系统文件> <本地目录>
#下载整个目录
sftp> get -r <共享文件系统文件> <本地目录>示例:
将本机/opt/testfile.txt文件上传至共享文件系统的/home/kenc-user/目录下:
sftp> put /opt/testfile.txt /home/kenc-user
Uploading /opt/testfile.txt to /home/kenc-user/testfile.txt
testfile.txt 100% 116KB 378.0KB/s 00:00将本机/opt/testdir/目录上传至共享文件系统的/home/kenc-user/目录下:
sftp> put -r /opt/testdir/ /home/kenc-user/
Uploading /opt/testdir/ to /home/kenc-user/testdir
Entering /opt/testdir/
testfile.txt 100% 116KB 665.5KB/s 00:00将共享文件系统的/home/kenc-user/testfile.txt文件下载至本机的/opt目录下:
sftp> get /home/kenc-user/testfile.txt /opt
Fetching /home/kenc-user/testfile.txt to /opt/testfile.txt
testfile.txt 100% 116KB 209.3KB/s 00:00将共享文件系统的/home/kenc-user/testdir/目录下载至本地的/opt目录下:
sftp> get -r /home/kenc-user/testdir/ /opt
Fetching /home/kenc-user/testdir/ to /opt/testdir
Retrieving /home/kenc-user/testdir
testfile.txt 100% 116KB 208.2KB/s 00:00其他一些SFTP常用命令
#本地操作(操作本地文件)
lls #列出本地当前目录的文件
lcd /path #切换本地工作目录
lpwd #显示本地当前目录路径
lmkdir dirname #在本地创建目录
#远程操作(操作远程文件)
ls #列出远程目录内容
cd /path #切换远程工作目录
pwd #显示远程当前目录路径
mkdir dirname #在远程创建目录
rmdir dirname #删除远程空目录
rm filename #删除远程文件
mv oldname newname #重命名或移动远程文件curl 工具本身就支持SFTP 协议,无需额外安装其他库。
下载文件
curl -u <用户名>:<密码> sftp://<服务器地址>/<远程文件路径> -o <本地保存路径><用户名>: SFTP 服务器的用户名。
<密码>: SFTP 服务器的密码。
<服务器地址>: SFTP 服务器的IP 地址或域名。
<远程文件路径>: SFTP 服务器上要下载的文件的完整路径。
<本地保存路径>: 将文件保存到本地的路径和文件名。
上传文件
curl -u <用户名>:<密码> -T <本地文件路径> sftp://<服务器地址>/<远程目录路径>/<文件名><用户名>: SFTP 服务器的用户名。
<密码>: SFTP 服务器的密码。
<本地文件路径>: 本地要上传的文件路径。
<服务器地址>: SFTP 服务器的IP 地址或域名。
<远程目录路径>: SFTP 服务器上要上传到的目录路径。
<文件名>: 上传到SFTP 服务器上文件的名称。
scp是ssh自带的远程复制工具,和sftp相比,scp命令省去了交互式的操作方法,可以一键完成数据的传输。更适合单次数据传输或在shell脚本中使用。
上传文件
从本地上传文件或整个目录到共享文件系统
#上传单个文件
scp <本地文件> <用户名>@<主机名>:<共享文件系统路径>
#上传整个目录
scp -r <本地目录> <用户名>@<主机名>:<共享文件系统路径>下载文件
从共享文件系统下载文件或整个目录到本地
#下载单个文件
scp <用户名>@<主机名>:<共享文件系统文件> <本地路径>
#下载整个目录
scp -r <用户名>@<主机名>:<共享文件系统目录> <本地路径>示例:
将本机/opt/testfile.txt文件上传至共享文件系统的/home/kenc-user/目录下:
localhost ~ % scp /opt/testfile.txt user@1.2.3.4:/home/kenc-user
user@1.2.3.4's password:
testfile.txt 100% 116KB 499.8KB/s 00:00将本机/opt/testdir/目录上传至共享文件系统的/home/kenc-user/目录下:
localhost ~ % scp -r /opt/testdir user@1.2.3.4:/home/kenc-user
user@1.2.3.4's password:
testfile.txt 100% 116KB 314.5KB/s 00:00
localhost ~ % Rclone是一个用于管理云存储文件的命令行程序。它是云供应商网络存储界面的功能丰富的替代方案。超过70种云存储产品支持rclone,包括S3对象存储、商业及个人文件存储服务以及标准传输协议。
除了sftp和scp名另外,用户还可以使用rclone进行更多高级的操作,譬如:
◦ 提供诸如cat、copy、move、sync等命令,功能丰富。
◦ 通过调整并发参数提高并发传输文件数量,从而传输提高速度。
◦ 方便地配置多种后端存储能力,并在多个存储服务之间高效传输、同步数据,例如将S3系统上的数据直接导入sftp后端而不需要再开发程序。
更多Rclone的介绍,请查看官网 rclone.org
本地使用rclone配置sftp参考
安装请参见官方文档,安装完成后,用户可以通过rclone config进行向导式配置,也可以直接创建配置文件,例如:
#创建配置文件
mkdir -p ~/.config/rclone && touch ~/.config/rclone/rclone.conf
#配置文件内容如下:
[sfss] #remote远程服务名称,rclone通过该名称在命令行中标识远端
type = sftp
host = 1.2.3.4 #主机名
user = root #用户名
#注意,密码和密钥保留一种即可
pass = P1a0BMOqg-Un__hxFvCRf9WusiNHuYtvoItR #注意这里必须是密文密码,可由“rclone obscure 明文密码”命令生成对应的密文密码
key_file = /home/user/.ssh/id_rsa #私钥文件路径
shell_type = unix上传的基本操作
从本地上传文件或整个目录到共享文件系统
#上传单个文件
rclone copy <本地文件> <远程服务名称>:<共享文件系统目录>
#上传整个目录
rclone copy <本地目录> <远程服务名称>:<共享文件系统目录>下载的基本操作
从共享文件系统下载文件或整个目录到本地
#下载单个文件
rclone copy <远程服务名称>:<共享文件系统目录> <本地文件>
#下载整个目录
rclone copy <远程服务名称>:<共享文件系统目录> <本地目录> 示例:
将本地/opt/testdir/ 目录上传至共享文件系统目录/home/下,sfss为rclone配置文件中的远端服务名:
localhost ~ % rclone copy /opt/testdir/ sfss:/home/ --progress
Transferred: 462.344 KiB / 462.344 KiB, 100%, 231.310 KiB/s, ETA 0s
Transferred: 4 / 4,100%
Elapsed time: 2.0s
localhost ~ %将本地/opt/testfile.txt文件上传至共享文件系统目录/home/下,sfss为rclone配置文件中的远端服务名:
localhost ~ % rclone copy /opt/testfile.txt sfss:/home/ --progress
Transferred: 0 B / 0 B, -, 0 B/s, ETA -
Elapsed time: 0.0s将共享文件系统目录/home/testfile.txt文件下载到本地/opt/下,sfss为rclone配置文件中的远端服务名:
localhost ~ % rclone copy sfss:/home/testfile.txt /opt --progress
Transferred: 115.586 KiB / 115.586 KiB, 100%, 0 B/s, ETA -
Transferred: 1 / 1, 100%
Elapsed time: 0.4s将共享文件系统目录/home/testdir/下载到本地/opt/下,sfss为rclone配置文件中的远端服务名:
localhost ~ % rclone copy sfss:/home/testdir/ /opt/ --progress
Transterred: 0 B / 0 B, -, 0 B/s, ETA -
Checks: 1 / 1, 100%
Elapsed time: 0.2s其他一些rclone常用命令
rclone ls remote:path #查看文件
rclone copy src dst #复制
rclone sync src dst #同步
rclone move src dst #移动/重命名
rclone delete remote:path #删除
rclone mount remote:path /mnt #挂载
rclone check src dst #比较
rclone copy --bwlimit 1M src dst #限速
rclone copy --update src dst #增量备份
rclone copy -P src dst #进度/日志SFTP还支持图形化客户端。其中,FileZilla 是一款开源、免费、快速、可靠的跨平台FTP、FTPS和SFTP客户端,具有许多有用的功能和直观的图形用户交互界面,是使用最广泛的FTP类图形化客户端。类似的商业软件还包括:CuteFTP、LeapFTP和FlashFXP等。
FileZilla支持Windows、MacOS和Linux的图形化界面,用户可以方便地在自己的办公电脑、Windows服务器上使用FileZilla作为可视化的数据传输工具。除了基本的SFTP功能外,FileZilla还支持:
拖拽式文件传输
可视化进度监控
断点续传
更多信息请查看FileZilla官网。
请在官网上下载FileZilla Client,并根据自己的操作系统选择相应的安装程序,如下图:
下载安装后打开FileZilla,如下图所示:
上传下载文件操作
选中文件点击上传即可,可以选中多个文件或者目录上传到指定远端目录。当然,双击多拽也可以实现相同的效果。同时FileZilla支持断点续传,文件覆盖或重命名等功能。
Q1:传输加速优化方案
在Linux下将TCP拥塞算法调整为BBR,优化大数据量上传场景。
#在客户端执行
sysctl -w net.ipv4.tcp_congestion_control=bbr
纯净模式
