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

如何让ansible.posix.synchronize跳过不存在的源文件夹?

解决方案:跳过不存在的源文件夹执行同步

可以通过stat模块检查文件夹存在性,结合set_fact筛选有效列表,再执行同步任务,具体步骤如下:

1. 检查所有待同步文件夹的存在状态

遍历folder_list,用stat模块检查每个源文件夹是否存在,将结果注册为变量:

tasks:
  - name: 检查待同步文件夹状态
    stat:
      path: "/path/folder/{{ item }}"
      get_checksum: false
    loop: "{{ folder_list | list }}"
    register: folder_stats

2. 筛选出存在的文件夹

用set_fact从检查结果中过滤出存在的文件夹,生成新的有效列表:

- name: 筛选存在的文件夹
    set_fact:
      existing_folders: "{{ folder_stats.results | selectattr('stat.exists', 'equalto', true) | map(attribute='item') | list }}"

3. 执行同步任务

遍历筛选后的existing_folders列表,执行同步操作:

- name: 同步存在的文件夹
    loop: "{{ existing_folders }}"
    ansible.posix.synchronize:
      src: "/path/folder/{{ item }}"
      dest: "/other_node/folders/"
      archive: false
      recursive: true
      perms: true
      checksum: true
      delete: true

关于问题发布平台的说明

这个问题既涉及Ansible脚本的编写,也属于系统运维自动化的实践场景,ServerFault和Stack Overflow都适合发布:

  • 如果更侧重Ansible语法、模块组合的代码层面问题,Stack Overflow是更匹配的选择;
  • 如果更偏向生产环境下的运维实践、同步策略这类运维场景问题,ServerFault更合适。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 17:25:21