应用
- 用于将本地主机的文件拷贝到目标主机上的指定位置。
参数
- 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