Ansible Recursive Directory Copy


Answer :

file module is not for copying the files, but for setting attributes of files on the target.

copy module is for copying.


Providing some additional information to the accepted answer..

Recursive copy using directory paths has the following disadvantages:

  • you cannot get changed state information per file copied
  • so --check and --check --diff flags won't show anything
  • you cannot include/exclude specific files/directories to/from the recursion
  • performing corrective changes after the bulk copy will never produce a state with changed=0 and could also affect files that already existed on remote host.

There seems to be a more powerful way to perform a recursive copy, which is to use with_filetree combined with when

- name: "create-remote-dirs"   file:     path: /dest/dir/{{item.path}}     state: directory     mode:  '0775'   with_filetree: sourceDir/   when: item.state == 'directory' - name: "copy-files"   copy:     src: "{{item.src}}"     dest: /dest/dir/{{item.path}}     mode:  '0744'   with_filetree: sourceDir/   # combinations of 'is' and 'is not' can be used below.   when: item.state == 'file'          and item.path is not search("excludedDir/*")         and item.path is not search("*.bak") 

Comments

Popular posts from this blog

Are Regular VACUUM ANALYZE Still Recommended Under 9.1?

Can Feynman Diagrams Be Used To Represent Any Perturbation Theory?