gpt4 book ai didi

linux - 使用 ansible 查找和复制文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:03:43 24 4
gpt4 key购买 nike

我想用ansible做一个脚本,在文件夹“/software”上搜索最后一天编辑的所有文件,然后将它们移动到“/tmp”

到目前为止这是我的代码(redhat 7.4):

 - name: recurse path
find:
path: /software
recurse: yes
file_type: file
age: 1d
register: files
- name: copy files to tmp
copy:
src: ~/{{files}}
dest: /tmp

我得到错误:

an exeption occurred during task execution ... could not find or access '~{u'files': []}, u'changed': False, 'failed': False, u'examined': 4....

文件夹有完全访问权限,所以我不认为它的权限。

我做错了什么?

最佳答案

作为documentedfind 模块的返回值是一个对象,其中包含在 files 关键字下找到的文件列表。

不能直接使用:copy模块只取1个文件或文件夹作为src,所以必须遍历所有文件:

- name: check the content and structure of the variable
debug:
var: files
- name: copy files to tmp
copy:
src: "{{item.path}}"
dest: /tmp
with_items: "{{files.files}}"

开发时在 register 之后调试 var 以检查它的结构(这样您可以找到如何使用它)和内容(在您的情况下,看起来像文件列表)始终是一个好习惯是空的)。

顺便说一句:您需要知道 find 模块在远程主机上搜索,但默认情况下,copy 模块从 ansible 执行器机器复制,所以在您的在这种情况下,src 可能不存在!因此,如果您要从本地复制到远程,只需将 delegate_to: localhostrun_once: yes 添加到您的 find 任务中,否则您需要使用copy 任务上的 remote_src: yes 参数。

关于linux - 使用 ansible 查找和复制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50276264/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com