SFTP如何批量传输文件
导读:SFTP批量传输文件的常见方法 1. 使用命令行工具(基础批量操作) 命令行是最直接的批量传输方式,适合简单场景。核心命令包括mput(批量上传)和mget(批量下载): 批量上传:连接SFTP服务器后,使用mput命令配合通配符上传本地...
SFTP批量传输文件的常见方法
1. 使用命令行工具(基础批量操作)
命令行是最直接的批量传输方式,适合简单场景。核心命令包括mput
(批量上传)和mget
(批量下载):
- 批量上传:连接SFTP服务器后,使用
mput
命令配合通配符上传本地目录所有文件。例如:
sftp username@hostname
→ 输入密码 → 执行mput /local/path/*
(将本地/local/path/
下所有文件上传至远程当前目录)。 - 批量下载:类似地,使用
mget
命令下载远程文件。例如:
mget /remote/path/*.txt
(下载远程/remote/path/
下所有.txt
文件至本地当前目录)。 - 注意事项:
mput
/mget
默认会逐个确认文件传输,若需跳过确认,可添加-i
参数(如mput -i /local/path/*
)。
2. 编写Shell脚本(自动化批量操作)
通过Shell脚本可自动化执行批量传输流程,避免重复输入命令:
- 基础脚本示例:创建
upload.sh
文件,内容如下:
赋予执行权限后运行:#!/bin/bash sftp username@hostname < < EOF cd /remote/directory # 切换至远程目标目录 mput /local/directory/* # 批量上传本地目录文件 bye # 退出SFTP会话 EOF
chmod +x upload.sh
→./upload.sh
。 - 带循环的复杂脚本:若需逐个处理文件(如添加日志),可使用
for
循环。例如:#!/bin/bash sftp username@hostname < < EOF cd /remote/directory $(for file in /local/directory/*; do echo "put \"$file\""; done) bye EOF
3. 使用Python脚本(灵活批量操作)
通过paramiko
或pysftp
库可实现更灵活的批量操作(如过滤文件类型、错误处理):
- paramiko示例(批量上传/下载):
import paramiko import os # 连接SFTP服务器 ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('hostname', username='username', password='password') sftp = ssh.open_sftp() # 批量上传:本地目录→远程目录 local_dir = '/local/path' remote_dir = '/remote/path' for filename in os.listdir(local_dir): local_file = os.path.join(local_dir, filename) remote_file = os.path.join(remote_dir, filename) sftp.put(local_file, remote_file) print("批量上传完成!") # 批量下载:远程目录→本地目录 for filename in os.listdir(remote_dir): remote_file = os.path.join(remote_dir, filename) local_file = os.path.join(local_dir, filename) sftp.get(remote_file, local_file) print("批量下载完成!") sftp.close() ssh.close()
- pysftp示例(简化版):
import pysftp import os with pysftp.Connection('hostname', username='username', password='password') as sftp: # 批量上传 sftp.put_d('/local/path', '/remote/path') # 上传整个本地目录 # 批量下载 sftp.get_d('/remote/path', '/local/path') # 下载整个远程目录
4. 图形化工具(可视化批量操作)
若偏好可视化操作,可使用以下工具:
- FileZilla:
- 打开FileZilla,输入服务器地址、用户名、密码连接。
- 左侧“本地站点”面板选择需传输的文件/文件夹,按住
Ctrl
键多选。 - 拖放到右侧“远程站点”面板对应目录,完成批量传输。
- WinSCP:
- 新建站点连接,输入服务器信息并登录。
- 左侧文件资源管理器选择文件,拖放到右侧远程目录,支持多文件快速传输。
5. 使用expect工具(自动化交互式脚本)
若需处理密码输入等交互场景,可使用expect
工具编写自动化脚本:
- 示例脚本:创建
sftp_batch.exp
文件,内容如下:
赋予执行权限后运行:#!/usr/bin/expect -f set timeout 20 set host "remote_host" set user "username" set password "password" set local_dir "/local/path" set remote_dir "/remote/dir" spawn sftp $user@$host expect "password:" send "$password\r" expect "sftp> " send "cd $remote_dir\r" expect "sftp> " # 遍历本地目录并上传文件 foreach file [glob -nocomplain -- $local_dir/*] { set filename [file tail $file] send "put $file $filename\r" expect "sftp> " } send "bye\r" expect eof
chmod +x sftp_batch.exp
→./sftp_batch.exp
。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: SFTP如何批量传输文件
本文地址: https://pptw.com/jishu/731071.html