温馨提示×

linux sftp怎么批量传

小樊
57
2026-10-02 01:00:34
栏目: 智能运维

在 Linux 下使用 SFTP 批量传输文件,常见有几种方式,下面按「实用程度」给你总结:


一、sftp 交互模式下批量传(最简单)

先进入 sftp:

sftp user@host

1️⃣ 批量上传多个文件

put file1.txt file2.log file3.csv

2️⃣ 上传整个目录(sftp 本身不支持递归,需要配合 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

如果你告诉我:

  • 是 上传还是下载
  • 是否 目录
  • 是否要 自动化

我可以直接给你一条可用命令。

0 踩