在 Linux 下“自动化 SFTP”通常指无需人工交互完成上传/下载/同步文件。下面按推荐程度和使用场景系统介绍几种主流方案。
sftp + 批处理脚本(官方方式)sftp 本身支持批处理模式,适合简单自动化。
ssh-keygen -t rsa
ssh-copy-id user@remote_host
# sftp_batch.txt
cd /remote/path
lcd /local/path
put file.txt
get report.csv
bye
sftp -b sftp_batch.txt user@remote_host
✅ 优点
❌ 缺点
lftp(强烈推荐)lftp 对 SFTP 支持非常好,适合自动化和同步。
yum install lftp # CentOS
apt install lftp # Ubuntu
lftp sftp://user:password@host <<EOF
cd /remote/path
lcd /local/path
put file.txt
bye
EOF
lftp -e "mirror -R /local/path /remote/path; bye" \
sftp://user@host
✅ 优点
rsync over SSH(不是纯 SFTP)如果对方只是 SSH,不是严格 SFTP:
rsync -avz -e ssh /local/path user@host:/remote/path
✅ 优点
❌ 限制
import paramiko
transport = paramiko.Transport(("host", 22))
transport.connect(username="user", password="pass")
sftp = paramiko.SFTPClient.from_transport(transport)
sftp.put("local.txt", "/remote/local.txt")
sftp.close()
✅ 适合
crontab -e
0 2 * * * /usr/bin/lftp -f /scripts/sftp_auto.lftp
.ssh/config| 场景 | 推荐 |
|---|---|
| 简单上传下载 | sftp -b |
| 自动同步 | lftp |
| 系统备份 | rsync |
| 开发集成 | Python |
如果你愿意,可以告诉我:
我可以直接帮你写一套可运行脚本。