应用

  • 用于将本地主机的文件拷贝到目标主机上的指定位置。

参数

  • src:
  • 要复制到远程服务器的文件的本地路径,这可以是绝对路径,也可以是相对路径。
  • 如果路径是一个目录,则递归地复制它。
  • 如果路径以“/”结尾,则只有该目录的内部内容被复制到目标。
  • 如果不以“/”结尾,则复制包含所有内容的目录本身。
  • dest:
  • 文件复制到的目标主机的绝对路径。
  • 如果“src”是一个目录,那么它也必须是一个目录。
  • 如果“dest”是不存在的路径,并且“dest”以“/”结尾或“src”是目录,则创建“dest”。
  • 如果“dest”是相对路径,则起始目录由远程主机确定。
  • 如果'src'和'dest'是文件,则不会创建'dest'的父目录,如果该父目录不存在,则任务将失败。
  • backup:创建一个包含时间戳信息的备份文件,以便可以获取原始文件。
  • directory_mode:
  • 执行递归复制时,需要设置目录的模式。如果没有设置,我们将使用系统默认值。
  • 该模式只在新创建的目录上设置,不会影响已经存在的目录。
  • content:
  • 当代替“src”使用时,直接将文件的内容设置为指定的值。
  • 仅当“dest”是文件时有效。如果文件不存在,则创建该文件。
  • 指定内容中不可以有变量,如果内容中有变量,请使用template模块。
  • force:
  • 影响到是否必须始终替换远程文件。
  • 如果“yes”,则当内容与源文件不同时,将替换远程文件。
  • 如果“no”,则仅当目标不存在时才传输文件。
  • [Default: True],type: bool
  • mode:设置文件权限,模式实际上是八进制数字(如0644),少了前面的零可能会有意想不到的结果。从版本1.8开始,可以将模式指定为符号模式(例如u+rwx或u=rw,g=r,o=r)。
  • owner:设置(文件/目录)的所属用户。
  • group:(设置文件/目录)的所属组。
  • remote_src:
  • 影响是否是在本地主机中搜索"src“
  • 如果“no”,它将在本地主机上搜索“src”。
  • 如果“yes”,它将在目标主机上搜索“src”。

示例:

1、复制文件并给文件设置属主,属组,权限。

- name: Copy file with owner and permissions
  copy:
    src: /srv/myfiles/foo.conf
    dest: /etc/foo.conf
    owner: foo
    group: foo
    mode: '0644'

2、使用符号表示法复制具有所有者和权限的文件。

- name: Copy file with owner and permission, using symbolic representation
  copy:
    src: /srv/myfiles/foo.conf
    dest: /etc/foo.conf
    owner: foo
    group: foo
    mode: u=rw,g=r,o=r

3、另一个符号模式示例,添加一些权限并删除其他权限。

- name: Another symbolic mode example, adding some permissions and removing others
  copy:
    src: /srv/myfiles/foo.conf
    dest: /etc/foo.conf
    owner: foo
    group: foo
    mode: u+rw,g-wx,o-rwx

4、将新的“ntp.conf”文件复制目标主机指定路径,如果原始文件与复制的版本不同,则备份原始文件。

- name: Copy a new "ntp.conf file into place, backing up the original if it differs from the copied version
  copy:
    src: /mine/ntp.conf
    dest: /etc/ntp.conf
    owner: root
    group: root
    mode: '0644'
    backup: yes

5、将自定的字符串写入到指定的文件中。

- name: Copy using inline content
  copy:
    content: '# This file was moved to /etc/other.conf'
    dest: /etc/mine.conf

6、如果follow=yes,/path/to/file将被foo.conf的内容覆盖。

- name: If follow=yes, /path/to/file will be overwritten by contents of foo.conf
  copy:
    src: /etc/foo.conf
    dest: /path/to/link  # link to /path/to/file
    follow: yes

7、如果follow=no,此/path/to/link文件会被创建并被foo.conf的内容覆盖。

- name: If follow=no, /path/to/link will become a file and be overwritten by contents of foo.conf
  copy:
    src: /etc/foo.conf
    dest: /path/to/link  # link to /path/to/file
    follow: no

8、如果remote_src=yes,将会在目标主机上去找指定的文件并复制的目标主机指定的路径下。

- name:Find the specified file on the target host and copy it to the path specified by the target host.
  copy:
    src: /etc/foo.conf
    dest: /path/to/link
    remote: yes