在 Linux 下使用 SFTP 批量传输文件,常见有几种方式,下面按「实用程度」给你总结:
先进入 sftp:
sftp user@host
put file1.txt file2.log file3.csv
lftp 或 scp)⚠️ 原生 sftp 不能直接传目录
mput(适合批量同类型文件)sftp user@host
cd /remote/path
lcd /local/path
mput *.log
✅ 会逐个问你是否确认,可先执行:
prompt off
关闭询问,实现“真批量”。
scp(推荐,支持目录)如果你只是想批量传,不强制用 sftp 协议:
scp -r /local/dir user@host:/remote/dir
✅ 支持:
lftp(最强大,推荐)支持 SFTP + 批量 + 目录同步:
lftp sftp://user@host
mirror -R local_dir remote_dir
或一行命令:
lftp -e "mirror -R ./local /remote; bye" sftp://user@host
✅ 支持断点、并发、目录
#!/usr/bin/expect
spawn sftp user@host
expect "password:"
send "password\r"
expect "sftp>"
send "cd /remote\r"
send "lcd /local\r"
send "mput *.txt\r"
send "bye\r"
interact
或用 sshpass:
sshpass -p 'pwd' sftp user@host <<EOF
put *.log
bye
EOF
| 需求 | 推荐 |
|---|---|
| 少量文件 | sftp + mput |
| 整个目录 | scp -r |
| 自动化/同步 | lftp |
| 脚本部署 | expect / sshpass |
如果你告诉我:
我可以直接给你一条可用命令。