温馨提示×

linux sftp如何批量操作

小樊
47
2026-09-23 07:19:18
栏目: 智能运维

在 Linux 下使用 SFTP 批量操作,常见有几种方式,按“是否交互”和“是否脚本化”来区分:


一、SFTP 非交互式批量操作(最常用 ✅)

1️⃣ 使用 sftp + 批处理文件(推荐)

适合:上传/下载多个文件、定时任务

写法:

sftp -b batch.txt user@host

batch.txt 示例:

cd /remote/path
lcd /local/path
put file1.txt
put file2.txt
get remote.log
bye

常用命令:

  • put 上传
  • get 下载
  • mput / mget 批量(支持通配符)
  • rm / mkdir / rmdir

2️⃣ 一行命令批量执行

echo "put *.txt" | sftp user@host:/remote/path

或:

sftp user@host <<EOF
cd /data
mput *.log
bye
EOF

二、自动登录(免输密码)

✅ 方式 1:SSH 密钥(最安全)

ssh-keygen
ssh-copy-id user@host

之后 sftp 不再需要密码。

✅ 方式 2:sshpass(不推荐生产)

sshpass -p 'password' sftp -b batch.txt user@host

三、使用 lftp(更强大的批量工具 ✅✅)

适合:镜像同步、递归上传下载

lftp sftp://user@host -e "mirror -R local_dir remote_dir; bye"

常用:

  • mirror 下载目录
  • mirror -R 上传目录
  • 支持断点续传

四、使用 rsync(最推荐,若允许)

如果服务器支持 SSH:

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

✅ 支持增量
✅ 支持目录递归
✅ 生产环境首选


五、常见批量场景示例

上传整个目录

sftp -b - user@host <<EOF
mkdir /backup
cd /backup
lcd ./data
mput *
bye
EOF

下载多个日志

sftp user@host <<EOF
cd /var/log
mget app-*.log
bye
EOF

六、总结建议

场景 推荐方式
简单批量 sftp -b
目录同步 lftp / rsync
自动化 SSH 密钥 + 脚本
最安全 rsync over SSH

如果你有具体需求(如:批量上传某类文件 / 定时同步 / 服务器限制),可以告诉我,我可以直接帮你写脚本。

0