You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Ansible临时命令从受控主机向控制主机复制文件?

从Ansible受控主机向控制主机传输文件的可行方案

当然可行!不过你提到的copy模块确实是从控制主机推送文件到受控主机的,反向拉取文件需要用Ansible的fetch模块——这就是专门用来从受控主机把文件拉到控制主机的工具。

基本用法示例

假设你要从所有受控主机拉取/指定目录/输出文件.log到控制主机的./收集到的文件/目录下,命令格式是这样的:

ansible all -m fetch -a "src=/指定目录/输出文件.log dest=./收集到的文件/"

关键参数说明

  • src:受控主机上要拉取的文件路径(默认只能拉单个文件,拉目录需要额外参数)
  • dest:控制主机上用来存放拉取文件的目录,Ansible会自动在这个目录下创建以受控主机名为子目录的结构,比如你的受控主机叫node1,文件会存在./收集到的文件/node1/指定目录/输出文件.log

简化文件存储结构(可选)

如果不想保留受控主机的原路径结构,只想把文件直接放到dest目录下,可以加上flat=yes参数:

ansible all -m fetch -a "src=/指定目录/输出文件.log dest=./收集到的文件/ flat=yes"

这样文件就会直接存在./收集到的文件/输出文件.log,但要注意:如果多个主机的文件名相同,后面拉取的会覆盖前面的,所以主机多且文件名重复时,建议保留默认结构或者给文件加主机名前缀。

拉取整个目录的方法

如果要拉取整个目录而不是单个文件,可以搭配archive=yes参数,Ansible会把目录打包成tar文件后拉取:

ansible all -m fetch -a "src=/指定目录/ dest=./收集到的文件/ archive=yes"

拉取后控制主机上会得到./收集到的文件/主机名/指定目录.tar,解压就能得到原目录内容。

内容的提问来源于stack exchange,提问作者Banthita Limwilai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:06:26