目录
一. 环境准备
⏹在安卓手机上下载个MiXplorer,用作SFTP
和FTP
服务器
- 官网: https://mixplorer.com/
⏹设置给服务器设置好用户名,密码之后,开启服务器
⏹下载WinSCP,准备用其命令行的方式从服务器获取数据
- 官网: https://winscp.net/eng/index.php
⏹在linux中安装 lftp命令
sudo apt install lftp
二. sftp命令连接到SFTP服务器
sftp:是 SSH 文件传输协议,属于 SSH 安全套接层(SSH Secure Shell)的一部分,用于安全地在客户端和服务器之间传输文件。
sftp:使用 SSH 协议进行连接和数据传输,所有的数据都是加密的,因此更加安全,适合对数据安全性要求较高的场景。
sftp -P 端口号 用户名@服务器地址
- 为了安全考虑,密码无法被显示的指定在命令行中
sftp -P 2222 fengyehong@192.168.3.23
⏹如下如图所示,通过命令行登录SFTP服务器
- 支持
ls
和ls -l
命令 quit
:退出服务器
三. lftp命令
- lftp 是一个功能强大的命令行 FTP 客户端程序,它支持多种协议(包括 FTP、FTPS、SFTP 等),可以用于文件传输和管理。
- lftp 提供了丰富的功能,包括下载、上传、目录操作、文件搜索、断点续传、并行传输等。它可以处理多个连接和任务,并支持脚本化操作。
- 适用于需要进行大量文件传输、批量处理或自动化操作的情况,例如备份、同步、批量下载等。
3.1 连接FTP和SFTP服务器
⏹连接FTP服务器(协议可省略)
lftp ftp://Admin:1234@192.168.3.23:2121
⏹连接SFTP服务器,需要显示的指定协议
lftp sftp://fengyehong:1234@192.168.3.23:2222
3.2 将文件从sftp服务器下载到本地指定目录
-c
:用于执行一系列指定的命令,然后退出。这对于需要在脚本或命令行中执行一组自动化文件传输操作非常有用。- 多个命令之间使用
;
来分隔,表示按照顺序执行这些命令 set net:max-retries 1
:设置最大重试次数为 1mget
:批量下载文件-O
:指定下载到的本地目录- 注意:是英文大写的
O
,并不是数字0
- 注意:是英文大写的
&&
:逻辑与运算符,用于连接两个命令,确保前一个命令执行成功后才执行后一个命令。sleep 1
:暂停 1 秒,确保 lftp 命令执行完成后再退出
lftp -c "set net:max-retries 1; open sftp://fengyehong:1234@192.168.3.23:2222; mget /02-歌单/中文歌.txt -O /home/fengyehong/jmw_work_space && sleep 1"
四. 通过WinSCP命令行从SFTP服务器获取文件到Windows
- 通过PowerShell的方式执行
- 由于安装目录中存在空格,所以通过 PowerShell 中的
&
命令执行WinSCP.com
文件- 将
WinSCP.com
配置到环境变量中 或者 通过相对路径来执行WinSCP.com
文件的话,就不存在上述问题了
- 将
- 整个命令行的意思就是
- 通过
WinSCP.com
文件 - 连接sftp服务器
- 从服务器的指定目录下
- 将文件复制到本地的D盘
- 退出程序
- 通过
& "C:\Program Files (x86)\WinSCP\WinSCP.com" /command "open sftp://fengyehong:1234@192.168.3.23:2222" "get /02-歌单/纯音乐-静.txt D:\纯音乐-静.txt" "exit"