如何通过编写SFTP脚本,轻松实现高效且便捷的文件传输操作?
- 内容介绍
- 文章标签
- 相关推荐
痛点概述的观点是,为什么传统的 SFTP 操作让你抓狂?
手动输入密码一次只能传输单个文件缺乏错误日志——这些都是运维人员在日常文件传输时最常碰到的痛点。每次手动登录、手动执行上传/下载,不仅耗时还极易因密码泄露或操作失误导致安全隐患。
一步步搭建自动化 SFTP 脚本。让文件传输又快又稳
步骤 1:为本地执行脚本的使用者生成 SSH 密钥对
使用密钥认证可以彻底摆脱每次登录都要输入密码的烦恼,同时提高传输过程的安全性。
# 在本地机器上生成密钥
ssh-keygen -t rsa -b 4096 -C "automation@sftp"
# 查看生成的公钥内容
cat ~/.ssh/id_rsa.pub
步骤 2:将公钥分发到目标服务器的 authorized_keys 中
痛点:如果每台服务器都需要手动复制公钥,工作量会爆炸。这里推荐使用 ssh-copy-id 一键完成。
# 替换为实际的远程使用者名和 IP
ssh-copy-id -i ~/.ssh/id_rsa.pub fyt@202.206.64.33
# 验证免密登录是否成功
ssh fyt@202.206.64.33 "echo '连接成功'"
步骤 3:编写上传脚本
痛点:传统 sftp 命令行交互式操作不适合自动化。下面通过 Here Document把指令写进脚本,实现全自动上传。
步骤 4:编写下载脚本
痛点:手动逐个下载容易遗漏,脚本化后只需一次命令就可以完成。
进阶技巧的观点是,循环批量传输。轻松应对海量文件
批量上传
痛点:一次只能 mput 某个通配符,若需跨子目录或有特殊过滤规则,需要自行编写循环。
批量下载
痛点:If you need to download an entire remote directory。using `get *` may miss hidden files or sub‑folders.
说到实战小贴士,让你的 SFTP 脚本更可靠、更安全
- 使用密钥而非明文密码:SFTP 客户端不支持在脚本中直接写入密码,若硬编码密码会产生安全风险。务必采用 SSH 公钥认证。
- 加入错误检查:
- 日志输出示例: /var/log/sftp_upload.log 2>&1.
- Cron 定时执行:
- SFTP 超时与重连:-o ConnectTimeout=10 -o ServerAliveInterval=60 参数提高网络不稳定时的鲁棒性。
至于完整示例,每日凌晨自动同步项目代码至生产服务器
> " $log_file"="" 2="" =="{" bash="" bin="" echo="" else="" fi="" local_path="/home/fuyatao/project_release/" log_file="/var/log/sftp_sync_$.log" remote_ip="202.206.64.33" remote_path="/var/www/fuyatao/" 同步成功!"="">&1
# 若需要发送邮件提醒,可在此处调用 mailx 等工具。老实说,
告别手工操作。用脚本解放双手,实现高效、可靠的 SFTP 文件传输!
SFTP 脚本不仅能消除每次登录输入密码的烦恼,还能通过循环、日志和定时任务实现批量、持续、可追溯的文件同步。按照这篇文章提供的步骤,你可以快速搭建自己的自动化传输程序。让运维工作变得轻松且安全。
痛点概述的观点是,为什么传统的 SFTP 操作让你抓狂?
手动输入密码一次只能传输单个文件缺乏错误日志——这些都是运维人员在日常文件传输时最常碰到的痛点。每次手动登录、手动执行上传/下载,不仅耗时还极易因密码泄露或操作失误导致安全隐患。
一步步搭建自动化 SFTP 脚本。让文件传输又快又稳
步骤 1:为本地执行脚本的使用者生成 SSH 密钥对
使用密钥认证可以彻底摆脱每次登录都要输入密码的烦恼,同时提高传输过程的安全性。
# 在本地机器上生成密钥
ssh-keygen -t rsa -b 4096 -C "automation@sftp"
# 查看生成的公钥内容
cat ~/.ssh/id_rsa.pub
步骤 2:将公钥分发到目标服务器的 authorized_keys 中
痛点:如果每台服务器都需要手动复制公钥,工作量会爆炸。这里推荐使用 ssh-copy-id 一键完成。
# 替换为实际的远程使用者名和 IP
ssh-copy-id -i ~/.ssh/id_rsa.pub fyt@202.206.64.33
# 验证免密登录是否成功
ssh fyt@202.206.64.33 "echo '连接成功'"
步骤 3:编写上传脚本
痛点:传统 sftp 命令行交互式操作不适合自动化。下面通过 Here Document把指令写进脚本,实现全自动上传。
步骤 4:编写下载脚本
痛点:手动逐个下载容易遗漏,脚本化后只需一次命令就可以完成。
进阶技巧的观点是,循环批量传输。轻松应对海量文件
批量上传
痛点:一次只能 mput 某个通配符,若需跨子目录或有特殊过滤规则,需要自行编写循环。
批量下载
痛点:If you need to download an entire remote directory。using `get *` may miss hidden files or sub‑folders.
说到实战小贴士,让你的 SFTP 脚本更可靠、更安全
- 使用密钥而非明文密码:SFTP 客户端不支持在脚本中直接写入密码,若硬编码密码会产生安全风险。务必采用 SSH 公钥认证。
- 加入错误检查:
- 日志输出示例: /var/log/sftp_upload.log 2>&1.
- Cron 定时执行:
- SFTP 超时与重连:-o ConnectTimeout=10 -o ServerAliveInterval=60 参数提高网络不稳定时的鲁棒性。
至于完整示例,每日凌晨自动同步项目代码至生产服务器
> " $log_file"="" 2="" =="{" bash="" bin="" echo="" else="" fi="" local_path="/home/fuyatao/project_release/" log_file="/var/log/sftp_sync_$.log" remote_ip="202.206.64.33" remote_path="/var/www/fuyatao/" 同步成功!"="">&1
# 若需要发送邮件提醒,可在此处调用 mailx 等工具。老实说,
告别手工操作。用脚本解放双手,实现高效、可靠的 SFTP 文件传输!
SFTP 脚本不仅能消除每次登录输入密码的烦恼,还能通过循环、日志和定时任务实现批量、持续、可追溯的文件同步。按照这篇文章提供的步骤,你可以快速搭建自己的自动化传输程序。让运维工作变得轻松且安全。

