ansible.windows.win_copy 模块 – 将文件复制到 Windows 主机的远程位置
注意
此模块是 ansible.windows 集合 (版本 2.5.0) 的一部分。
如果您正在使用 ansible
包,则您可能已经安装了此集合。它不包含在 ansible-core
中。要检查它是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用: ansible-galaxy collection install ansible.windows
。
要在 playbook 中使用它,请指定: ansible.windows.win_copy
。
概要
win_copy
模块将本地计算机上的文件复制到 Windows 远程位置。对于非 Windows 目标,请改用 ansible.builtin.copy 模块。
注意
此模块具有相应的 action 插件。
参数
参数 |
注释 |
---|---|
确定是否应创建备份。 设置为 当 选项
|
|
如果不用 这适用于简单值,对于任何复杂或带格式的值,请切换到 ansible.windows.win_template 模块。 |
|
此选项控制使用 vault 自动解密源文件。 选项
|
|
应将文件复制到的远程绝对路径。 如果 使用 \ 作为路径分隔符,或在“双引号”中使用 \\。 如果 如果 如果 |
|
如果设置为 如果设置为 如果设置为 选项
|
|
此标志表示应遵循源树中存在的(如果存在)文件系统链接。 选项
|
|
如果 如果 选项
|
|
要复制到远程服务器的文件的本地路径;可以是绝对路径或相对路径。 如果路径是目录,则会将其(包括源文件夹名称)递归复制到 如果路径是目录并且以“/”结尾,则仅将该目录的内部内容复制到目标。否则,如果它不以“/”结尾,则会复制目录本身及其所有内容。 如果路径是文件并且 dest 以“\”结尾,则该文件将使用相同的文件名复制到文件夹。 除非使用 |
备注
注意
目前 win_copy 不支持从本地到远程以及从远程到远程的符号链接复制。
建议使用反斜杠
\
而不是/
来处理远程路径。由于 win_copy 模块通过 WinRM 运行,因此它不是一种非常高效的传输机制。如果要发送大型文件,请考虑将它们托管在 Web 服务上,并改用 ansible.windows.win_get_url。
当使用 become 与非管理员用户一起使用时,必须使用
ansible_remote_tmp
将远程临时目录设置为既可由 become 用户又可由连接用户访问的目录。有关更多信息,请参见示例。
另请参阅
另请参阅
- ansible.builtin.assemble
从片段组装配置文件。
- ansible.builtin.copy
将文件复制到远程位置。
- ansible.windows.win_get_url
从 HTTP、HTTPS 或 FTP 下载文件到节点。
- community.windows.win_robocopy
使用 Robocopy 同步两个目录的内容。
示例
- name: Copy a single file
ansible.windows.win_copy:
src: /srv/myfiles/foo.conf
dest: C:\Temp\renamed-foo.conf
- name: Copy a single file, but keep a backup
ansible.windows.win_copy:
src: /srv/myfiles/foo.conf
dest: C:\Temp\renamed-foo.conf
backup: true
- name: Copy a single file keeping the filename
ansible.windows.win_copy:
src: /src/myfiles/foo.conf
dest: C:\Temp\
- name: Copy folder to C:\Temp (results in C:\Temp\temp_files)
ansible.windows.win_copy:
src: files/temp_files
dest: C:\Temp
- name: Copy folder contents recursively
ansible.windows.win_copy:
src: files/temp_files/
dest: C:\Temp
- name: Copy a single file where the source is on the remote host
ansible.windows.win_copy:
src: C:\Temp\foo.txt
dest: C:\ansible\foo.txt
remote_src: true
- name: Copy a folder recursively where the source is on the remote host
ansible.windows.win_copy:
src: C:\Temp
dest: C:\ansible
remote_src: true
- name: Set the contents of a file
ansible.windows.win_copy:
content: abc123
dest: C:\Temp\foo.txt
- name: Copy a single file as another user
ansible.windows.win_copy:
src: NuGet.config
dest: '%AppData%\NuGet\NuGet.config'
vars:
ansible_become_user: user
ansible_become_password: pass
# The tmp dir must be set when using win_copy as another user
# This ensures the become user will have permissions for the operation
# Make sure to specify a folder both the ansible_user and the become_user have access to (i.e not %TEMP% which is user specific and requires Admin)
ansible_remote_tmp: 'c:\tmp'
返回值
常用返回值已在 此处 记录,以下是此模块独有的字段:
键 |
描述 |
---|---|
已创建的备份文件的名称。 返回值:如果 backup=yes 示例: |
|
运行复制后文件的 SHA1 校验和。 返回值:成功,src 为文件 示例: |
|
目标文件/路径。 返回值:已更改 示例: |
|
是否发生单个文件复制或文件夹复制。 返回值:成功 示例: |
|
已复制文件的基名。 返回值:已更改,src 为文件 示例: |
|
执行后目标的大小。 返回值:已更改,src 为文件 示例: |
|
目标机器上用于复制的源文件。 返回值:已更改 示例: |