Ansible副本-目标目录以/结束或不以/结尾

时间:2019-05-02 23:02:06

标签: ansible copy

我正在做一个远程拷贝,有一个关于dest的问题,如果dest以/结束或没有/有什么区别?

  1. 目的地:/ tmp / dest
  2. 目的地:/ tmp / 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

1 个答案:

答案 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)。