我正在尝试在Ansible中查找超过一天的文件,然后创建这些文件的tar.gz,我尝试了archive
模块,尽管它只创建了最后一个tar列表中的元素。有没有办法创建包含所有文件的tar.gz?
以下是我的剧本:
- name: Check all files
find: paths=/myfiles
file_type=file
age=1
age_stamp=mtime
register: files
failed_when: files.matched < 10
- name: Remove previous tarFile
file: path=/tmp/test.tar.gz
state=absent
- name: compress all the files in tar.gz
archive: path="{{ item.path }}"
dest=/tmp/test.tar.gz
format=gz
with_items:
"{{ files.files }}"
答案 0 :(得分:2)
它只创建列表中最后一个元素的tar
它正在为循环中的每个文件创建和覆盖/tmp/test.tar.gz
。检查时,只能看到最后一个。
如果查看archive
module docs,您会看到:
path
远程绝对路径,glob或路径列表或要压缩或归档的文件的整体。
因此,您可以提供文件列表作为path
参数的值:
- name: compress all the files in tar.gz
archive:
path: "{{ files_to_archive }}"
dest: /tmp/test.tar.gz
format: gz
vars:
files_to_archive: "{{ files.files | map(attribute='path') | list }}"
答案 1 :(得分:0)
我使用以下方法创建了多个zip文件。
- name: 'Create zip archive of {{ date_input }} NMON HTML files' archive: path: /tmp/{{ inventory_hostname }}_*.html dest: /tmp/NMON-{{ inventory_hostname }}.zip format: zip when: option == "5" delegate_to: localhost