删除文件夹的文件夹中超过x天的文件



我想使用ansible删除旧文件。我有一个数据日志文件夹,在这个文件夹里我有多个目录:

/data/log/folder1/
/data/log/folder2/
....

我试着使用这个易理解的剧本:

---
- hosts: all
tasks:
- name: find all files that are older than 10 days
find:
paths: /data/log/*/
age: 10d
recursive: yes
register: filesOlderThan10
- name: remove older than 10
file:
path: "{{ item.path }}" 
state: absent
with_items: "{{ (filesOlderThan10.files }}"

当我启动剧本时,没有任何内容被删除,我不确定我是否可以使用此语法/data/log/*/
因此,我正在寻找改进此代码的建议

到目前为止,我在战术手册中发现了三到四个错误

  1. 如果您需要删除您没有权限的文件,请使用"成为"或确保其在配置/库存中设置
  2. 路径:应该是完全合格的路径,我相信路径中不接受通配符它应该是路径:/data/log
  3. "recursive"不是查找模块的正确选项。它应该是"recurse">
  4. 最后一行有一个不需要的"(">

下面的代码应该可以使用

---
- hosts: all
tasks:
- name: find all files that are older than 10 days
find:
paths: /data/log
age: 10d
recurse: yes
register: filesOlderThan10
- name: remove older than 10
file:
path: "{{ item.path }}" 
state: absent
with_items: "{{ filesOlderThan10.files }}"

我之前一直在find中使用cronjob,并决定转到AWX,在查看了这里和其他文章后,我得出了以下结论。在我们说话的时候经过测试和工作。第一个任务将所有超过3天的文件注册为matched_files_dirs。第二个任务删除它们。完成这项工作,但比在linux上运行cron慢。

---
- name: Cleanup
hosts: linux
gather_facts: false
tasks:
- name: Collect files
shell: find /opt/buildagent/system*/target_directory -type f -mtime +3
register: matched_files_dirs

- name: Remove files
become_user: root
file: 
path: "{{ item }}" 
state: absent
with_items: "{{ matched_files_dirs.stdout_lines }}"

最新更新