linux下用sftp批量上传下载文件无需额外工具,核心是mput/mget命令配合通配符和lcd命令切换本地路径,注意区分本地/远程路径、权限及交互确认机制。

Linux 下用 sftp 批量上传或下载多个文件,核心是利用通配符、批量命令和交互式操作,不需要额外安装工具(OpenSSH 客户端通常已预装)。关键在于分清本地与远程路径、掌握 mput/mget 命令的使用场景,以及避免常见权限或路径错误。
批量上传多个文件(mput)
进入交互式 sftp 会话后,mput 是最直接的批量上传方式。它默认作用于当前本地目录,支持通配符和空格分隔的多个文件名:
- 上传当前目录所有 .log 文件:
mput *.log - 上传指定几个文件:
mput file1.txt file2.jpg backup.tar.gz - 先切换本地工作目录再上传(更可控):
lcd /home/user/docs,再执行mput * - 注意:首次使用
mput时,sftp 会逐个确认(y/n),可输入yes或直接按y回车跳过全部提示;如想关闭确认,可在连接前加-o StrictHostKeyChecking=no(不推荐用于生产环境)
批量下载多个文件(mget)
mget 的逻辑与 mput 对称,但操作对象是远程服务器上的文件:
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
- 下载远程当前目录下所有 .conf 文件:
mget *.conf - 下载多个命名文件:
mget nginx.conf apache.conf hosts - 下载前建议先查看远程内容:
ls -la,避免匹配到意外文件 - 若需下载到特定本地目录,先执行
lcd /path/to/local/dir,再运行mget
非交互式一键批量(适合脚本)
不想手动进入交互模式?可用单行命令或批处理文件实现自动化:
- 上传当前目录所有 .py 文件到远程
/opt/scripts:sftp user@host cd /opt/scripts<br>mput *.py<br>quit<br>EOF
- 从远程拉取日志并保存到本地
./logs:mkdir -p ./logs && sftp user@host lcd ./logs<br>cd /var/log/app<br>mget *.log<br>quit<br>EOF
- 更可靠的做法是写一个
sftp_batch.txt文件,列出所有命令(每行一条),然后用sftp -b sftp_batch.txt user@host执行
上传或下载整个目录
sftp 原生命令不直接支持递归传输目录,但有明确替代方案:
- 用
put -r或get -r(注意:不是所有旧版 OpenSSH 都支持,推荐 OpenSSH 7.5+):put -r local_folder remote_folder - 若
-r不可用,先在远程创建目标目录:mkdir remote_folder,再用lcd切到本地目录,逐层mput *(适用于扁平结构) - 对复杂嵌套目录,更稳妥的选择是改用
scp -r:scp -r local_dir/ user@host:/remote/path/,它天然支持递归且无需交互










