温馨提示×

linux sftp能自动上传吗

小樊
44
2026-10-25 13:22:36
栏目: 智能运维

可以的,Linux 下 SFTP 是可以“自动上传”的,只是 SFTP 本身是一个交互式协议,所谓“自动”通常要靠脚本 + 工具来实现。

下面按常见方式给你说明:


一、用 sftp 命令 + 批处理(最简单)

sftp 支持 批处理模式(非交互):

sftp -b batch.txt user@host

batch.txt 示例:

put /local/file.txt /remote/path/
bye

也可以直接在命令行里写:

echo "put file.txt /remote/" | sftp user@host

✅ 适合:定时任务、简单上传
❌ 缺点:每次都要输入密码(除非配密钥)


二、使用 SSH 密钥实现“完全自动”(推荐)

  1. 生成密钥
ssh-keygen -t rsa
  1. 上传公钥到服务器
ssh-copy-id user@host
  1. 再跑 sftp 批处理脚本就不需要密码了

三、用 lftp(功能更强,支持断点)

lftp sftp://user@host -e "put file.txt; bye"

或脚本:

lftp -u user,password sftp://host <<EOF
put file.txt
bye
EOF

✅ 支持断点续传
✅ 更适合自动化


四、用 rsync over SSH(最常用)

虽然不是“sftp”,但底层是 SSH:

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

✅ 增量同步
✅ 脚本友好
✅ 生产环境最常用


五、结合 cron 定时自动上传

crontab -e

示例(每天 2 点上传):

0 2 * * * sftp -b /scripts/sftp_upload.txt user@host

六、程序方式(可选)

  • Python:paramiko
  • Shell:上面任意一种
  • CI/CD:GitHub Actions / Jenkins

总结一句话

SFTP 本身不能“自己动”,但通过脚本 + 密钥 + cron,完全可以实现 Linux 自动上传。

如果你愿意,可以告诉我:

  • 是否要免密
  • 是否定时
  • 是否大文件 / 断点

我可以直接帮你写一套可用脚本。

0 踩