在 Linux 下使用 SFTP 是可以批量传输文件的,只是 SFTP 本身是交互式命令,不像 scp 或 rsync 那样天然适合脚本化批量操作。下面给你几种常见做法:
sftp user@host
sftp> put *.log
sftp> mput *.txt
put:单个文件mput:多个文件(支持通配符)⚠️ 注意:mput 在某些 SFTP 服务器上可能受限。
-b 批处理文件(最常用)sftp -b batch.txt user@host
batch.txt 内容:
put /local/path/*.log /remote/path/
put file1.txt
put file2.txt
特点:
-b + 检查)echo "put /local/*.log /remote/" | sftp user@host
或:
sftp user@host <<EOF
put file1
put file2
bye
EOF
如果你的目的是真正高效批量传文件,以下比 SFTP 更合适:
scp /local/*.log user@host:/remote/
rsync -avz /local/ user@host:/remote/
优点:
| 需求 | 推荐方式 |
|---|---|
| 手动少量 | sftp 交互 |
| 脚本/定时 | sftp -b |
| 大量/频繁 | rsync |
| 简单远程拷贝 | scp |
如果你愿意,可以告诉我:
我可以直接给你写成可运行的脚本。