我正在做一个远程拷贝,有一个关于dest的问题,如果dest以/结束或没有/有什么区别?
我尝试过使用/不使用/,看起来他们两个都在复制。
- name: copy the properties file to dest
copy:
src: /tmp/src/{{ item }}
dest: /tmp/dest
remote_src: yes
with_items:
- runtime.properties
- default.properties
答案 0 :(得分:1)
如果要复制目录,则目标路径是否以/
结尾都无关紧要。在这两种情况下,Ansible首先确保目标目录存在,然后将源目录复制到目标目录。也就是说,考虑到以下任一情况:
- copy:
src: src_dir
dest: /tmp/dest/
或者:
- copy:
src: src_dir
dest: /tmp/dest
在两种情况下,Ansible都会首先创建/tmp/dest
(如果不存在),然后创建/tmp/dest/src_dir
,并用src_dir
的内容填充它。
但是,如果您要复制文件,情况会有所不同。如果目标目的地/tmp/dest
不存在,则此剧本将创建一个名为/tmp/dest
的文件:
- copy:
src: src_file
dest: /tmp/dest
但是,如果您添加到目的地的尾随路径,那么Ansible将首先创建目录/tmp/dest
,然后创建文件/tmp/dest/src_file
。
- copy:
src: src_file
dest: /tmp/dest/
如果名为/tmp/dest
的目录已经存在,则以上两个示例将做相同的事情(创建/tmp/dest/src_file
)。