在 Linux 下使用 SFTP 批量传输文件,常见做法有下面几种,按“是否交互”来区分:
sftp user@host
sftp> put *.log
sftp> mput *.txt
put:单个/通配符mput:批量(会逐个确认,可加 - 关闭提示)sftp> mput - *.jpg
SFTP 不能直接递归传目录,需要配合 scp 或 rsync:
✅ 推荐:
scp -r /local/dir user@host:/remote/dir
或:
rsync -avz /local/dir/ user@host:/remote/dir/
sftp -b batch.txt user@host
batch.txt 内容:
put file1.txt
put file2.log
put *.csv
bye
sftp + sshpass(无交互密码)sshpass -p 'password' sftp -b batch.txt user@host
⚠️ 不推荐生产环境使用明文密码
lftp(强大,支持批量+递归)lftp sftp://user@host <<EOF
mput *.log
mirror -R local_dir remote_dir
bye
EOF
✅ lftp 支持:
| 场景 | 推荐方式 |
|---|---|
| 临时手动 | sftp + mput |
| 脚本自动化 | sftp -b |
| 传目录 | scp -r / rsync |
| 高级批量 | lftp |
如果你愿意,可以告诉我:
我可以给你写一份可直接用的脚本。