温馨提示×

linux sftp能批量传输吗

小樊
48
2026-10-10 21:51:32
栏目: 智能运维

可以,SFTP 本身是支持批量传输的,只是它不像 scp 那样“天然”适合一行命令传一堆文件,需要用一些方式来实现。下面按常见场景给你说明:


一、使用 sftp 命令批量传输(交互 / 非交互)

1️⃣ 交互模式下批量传

sftp user@host
sftp> put file1 file2 file3
sftp> mput *.log
  • put:单个或多个文件
  • mput:批量上传(匹配通配符)

下载同理:

sftp> mget *.log

⚠️ mput / mget 会逐个确认(可用 prompt 关掉):

sftp> prompt

2️⃣ 非交互批量传输(脚本方式)✅推荐

使用 -b 批处理模式:

sftp -b batch.txt user@host

batch.txt 示例:

cd /remote/path
lcd /local/path
mput *.tar.gz
bye

适合 定时任务 / 自动化


二、用 scp 做“更简单”的批量传输(补充)

如果你只是想批量传文件,不一定要 sftp:

scp file1 file2 file3 user@host:/path/
scp /data/*.log user@host:/backup/

✅ 简单、稳定、支持通配符


三、用 rsync over SSH(最推荐批量/增量)

rsync -avz /local/path/ user@host:/remote/path/

优点:

  • 增量传输
  • 断点友好
  • 批量无压力

四、常见限制说明

  • SFTP 不支持 sftp user@host "put *" 这种远程命令式批量
  • 通配符只在 本地 shell 或 sftp 内部 生效
  • 大批量建议用 rsync

总结

✅ SFTP 能批量传
✅ 用 mput / mget 或 -b 批处理
✅ 自动化优先用 sftp -b 或 rsync

如果你愿意,可以告诉我:

  • 是 上传还是下载
  • 是否 定时任务
  • 是否 公网 / 内网

我可以直接帮你写脚本。

0 踩