温馨提示×

centos sftp如何批量传

小樊
40
2026-10-23 13:18:17
栏目: 智能运维

在 CentOS 上通过 SFTP 批量传输文件,常见有几种做法,按使用场景给你整理一下:


一、sftp 命令交互模式下批量传(适合少量文件)

1️⃣ 先连上 SFTP

sftp user@host

2️⃣ 批量上传(通配符)

put *.log

或指定目录:

put /data/*.csv /remote/path/

3️⃣ 批量下载

get *.log

⚠️ 注意:

  • sftp 不支持 put dir/ 直接传目录
  • 需要先 mkdir 再 put

二、用 sftp -b 批处理(推荐 ✅)

1️⃣ 写批处理脚本

vi sftp_batch.txt

内容示例:

put /local/path/*.log /remote/path/
put /local/path/file1 /remote/path/
bye

2️⃣ 执行批量 SFTP

sftp -b sftp_batch.txt user@host

✅ 适合 定时任务 / 脚本自动化


三、批量传目录(必须用 tar 或 rsync)

方法 1:tar + sftp(最稳)

tar czf - /local/dir | sftp user@host

在 sftp 中:

put /dev/stdin /remote/dir.tar.gz

或一行:

tar czf - dir | ssh user@host "cd /remote && tar xzf -"

方法 2:rsync(强烈推荐 ⭐)

如果目标机支持 SSH:

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

✅ 支持:

  • 断点续传
  • 增量同步
  • 目录递归

四、结合 SSH Key(免密批量)

ssh-keygen
ssh-copy-id user@host

之后 sftp / rsync 都不用输密码,适合脚本。


五、常见坑提醒

问题 解决
sftp 不能传目录 用 tar 或 rsync
中文乱码 加 -o 或客户端设置 UTF-8
权限不足 确认远端目录可写

如果你能告诉我:

  • 是 上传还是下载
  • 是否 目录
  • 是否要 定时任务

我可以直接给你一份可复制的脚本。

0 踩