Linux用sftp批量下载远程日志的核心是利用get命令的通配符(如*.log)和-r递归功能,配合lcd指定本地路径、脚本化去重校验及密钥登录保障自动化与安全性。

Linux 使用 sftp 批量下载远程服务器日志,核心在于用好 get 命令的通配符支持和递归能力,再配合本地目录管理与脚本化逻辑,避免重复拉取、提升可靠性。
用通配符一次下载多类日志文件
sftp 原生命令支持 * 和 ? 等 shell 风格通配符,无需额外工具即可批量操作:
- 下载当前远程目录下所有
.log文件:sftp> get *.log - 下载指定日期前缀的日志(如
app-20260728*.log):sftp> get app-20260728*.log - 下载多个扩展名(需逐条执行,sftp 不支持
{.log,.err}语法):sftp> get *.logsftp> get *.err
递归下载整个日志目录
如果日志按日期或服务分目录存放(如 /var/log/app/20260728/),用 -r 参数直接拉取整棵树:
- 进入远程日志目录:
sftp> cd /var/log/app - 递归下载当天目录:
sftp> get -r 20260728 - 指定本地保存路径(推荐):
sftp> get -r 20260728 ~/logs/app/20260728
注意:路径含空格时必须加引号,例如 get -r "app logs"。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
用脚本实现自动化+去重下载
手动操作适合临时任务,长期运维建议写 Bash 脚本,结合时间戳和本地校验避免重复:
- 先切换到目标本地目录:
sftp> lcd ~/logs/daily - 用
ls获取远程待下载列表,再循环get(适用于复杂过滤) - 更稳妥的做法是改用
lftp(支持断点续传、并行、增量镜像):lftp -u user,password sftp://host -e "mirror -c --include='*.log' /remote/logs ./local/logs; quit"
脚本中可加入 if [ ! -f "$local_file" ] 判断跳过已存在文件,或用 md5sum 校验一致性。
连接与权限注意事项
批量下载前确保基础连接稳定:
- 使用密钥登录更安全(避免密码交互打断脚本):
sftp -i ~/.ssh/id_rsa user@host - 确认远程用户对日志目录有读权限,常见问题如
/var/log默认仅 root 可读,需提前授权或切到对应用户 - 若端口非默认 22,记得加
-P 2222

















