本文档解释了如何使用copy
Ansible 中的模块复制文件和目录。如何复制除一个之外的所有孩子?
讨论
Hen*_*gel 13
最好的选择可能是使用该synchronize
模块。
同步是 rsync 命令的包装器,旨在使使用 rsync 的常见任务更容易。
而该copy
模块使用 Python 复制文件并且其功能受到限制。复制模块文档中有一个注释
:
“复制”模块递归复制功能不会扩展到大量(> 数百个)文件。作为替代,请参阅同步模块,它是 rsync 的包装器。
通过该synchronize
模块,可以将exclude
模式传递rsync_opts
给rsync
Ansible 正在执行的命令。
# Synchronize passing in extra rsync options
synchronize:
src: /tmp/helloworld
dest: /var/www/helloword
rsync_opts:
- "--exclude=.git"
Run Code Online (Sandbox Code Playgroud)
但是该synchronize
模块有一些注意事项。就像rsync
安装在本地和远程机器上的要求一样。这就是为什么我不会在不需要的时候使用它。
小智 8
如果我必须使用 just copy
,这就是我会做的。在此示例中,我使用patterns
特定于 Python 的 和 a .hiddenfile
(我使用隐藏来演示 find 有很多选项可供探索)。然而基本的想法是——你可以使用模式/正则表达式过滤器来满足你的需求。
- name: prepare a list of files to copy from some place
find:
paths: /var/some-place
hidden: yes
patterns:
- "*.py"
- ".hiddenfile"
delegate_to: localhost
register: target_files
- name: copy files to other place
copy:
src: "{{ item.path }}"
dest: /var/other-place
with_items: "{{ target_files.files }}"
tags:
- copy
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10934 次 |
最近记录: |