温馨提示×

linux sftp能批量传吗

小樊
46
2026-09-10 22:53:32
栏目: 智能运维

Linux 下使用 SFTP 是可以批量传输文件的,只是 SFTP 本身是交互式命令,不像 scprsync 那样天然适合脚本化批量操作。下面给你几种常见做法:


一、SFTP 交互模式下批量传(适合手动操作)

1️⃣ 使用通配符(一次传多个)

sftp user@host
sftp> put *.log
sftp> mput *.txt
  • put:单个文件
  • mput:多个文件(支持通配符)

⚠️ 注意:mput 在某些 SFTP 服务器上可能受限。


二、SFTP 批处理模式(推荐 ✅)

2️⃣ 使用 -b 批处理文件(最常用)

sftp -b batch.txt user@host

batch.txt 内容:

put /local/path/*.log /remote/path/
put file1.txt
put file2.txt

特点:

  • 非交互
  • 适合定时任务 / 脚本
  • 出错不会中断(除非加 -b + 检查)

三、SFTP 命令直接一行执行(简单场景)

echo "put /local/*.log /remote/" | sftp user@host

或:

sftp user@host <<EOF
put file1
put file2
bye
EOF

四、更推荐的“批量传输”方案(非 SFTP)

如果你的目的是真正高效批量传文件,以下比 SFTP 更合适:

✅ scp(简单粗暴)

scp /local/*.log user@host:/remote/

✅ rsync(强烈推荐 ⭐)

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

优点:

  • 支持增量
  • 支持断点
  • 批量无压力

五、总结建议

需求 推荐方式
手动少量 sftp 交互
脚本/定时 sftp -b
大量/频繁 rsync
简单远程拷贝 scp

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

  • 本地 → 服务器 还是 服务器 → 服务器
  • 是否 必须只能用 SFTP
  • 是否要 自动化 / 定时

我可以直接给你写成可运行的脚本。

0