ansible 文件上传和拉取

本文介绍Ansible中copy、synchronize及fetch模块的使用方法,包括参数配置和实际应用场景示例,帮助读者掌握高效文件传输与同步的技术要点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上传文件

copy 模块

将文件从本地或远程计算机复制到远程计算机上的某个位置

参数说明

参数类型说明
srcpath需要上传的本地文件或目录,必须选
destpath目标路径,路径可以绝对或相对,必须选
forcebool是否强制覆盖,默认值:True
group & ownerstr指定用户组和拥有者
backupbool在覆盖之前备份源文件,yes 表示备份,no 表示不备份
modestr文件权限设置

示例

  • 复制具有所有者和权限的文件
- name: Copy file with owner and permissions
  copy:
    src: /srv/myfiles/foo.conf
    dest: /etc/foo.conf
    owner: foo
    group: foo
    mode: '0644'
  • 使用符号表示法复制具有所有者和权限的文件
- 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
  • 将新的“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
synchronize 模块

synchronize 是 Rsync 的包装器
它可以使您的剧本中的常见任务快速而简单

参数说明

参数类型说明
src & destpath需要上传文件的本地路径与目标路径, 必须选
dest_portint目标主机上ssh的端口号。默认为 ansible_ssh_port 或 ansible_port 的值
archivebool显示rsync的存档标志所属信息
compressbool在传输过程中压缩文件数据
copy_linksbool复制符号链接,是映射的文件复制
group & ownerbool保留文件的所属组与所属者
deletebool删除“dest”中“src”路径中不存在的文件(传输后,而不是之前)默认值 False
dirsbool不递归地传输目录 默认值 False
modestr指定同步的方向 push 推送,pull 拉取
partialbool告诉rsync保留部分文件,这将使文件其余部分的后续传输更快
permsbool保留权限
rsync_optslist通过传入数组来指定其他rsync选项。

示例

  • 将控制计算机上的src同步到远程主机上的dest
- name: Synchronization of src on the control machine to dest on the remote hosts
  synchronize:
    src: some/relative/path
    dest: /some/absolute/path
  • 使用rsync协议进行同步(推送)
- name: Synchronization using rsync protocol (push)
  synchronize:
    src: some/relative/path/
    dest: rsync://somehost.com/path/
  • 使用rsync协议进行同步(拉取)
- name: Synchronization using rsync protocol (pull)
  synchronize:
    mode: pull
    src: rsync://somehost.com/path/
    dest: /some/absolute/path/
  • 控制机器上两条路径的同步
- name: Synchronization of two paths both on the control machine
  synchronize:
    src: some/relative/path
    dest: /some/absolute/path
  delegate_to: localhost
  • 在一个远程主机上同步两个目录。
- name: Synchronize two directories on one remote host.
  synchronize:
    src: /first/absolute/path
    dest: /second/absolute/path
  delegate_to: "{{ inventory_hostname }}"
  • 同步传入额外的rsync选项
- name: Synchronize passing in extra rsync options
  synchronize:
    src: /tmp/helloworld
    dest: /var/www/helloworld
    rsync_opts:
      - "--no-motd"
      - "--exclude=.git"

拉取文件

fetch 模块

此模块的工作方式与[copy]类似,但与之相反
它用于从远程计算机获取文件,并将它们本地存储在文件树中,按主机名组织
如果“dest”上已存在的文件与“src”不同,则将覆盖这些文件

参数说明

参数类型说明
src & destpath需要拉取文件的目标路径与本地路径, 必须选
flatbool使用源文件的基本名称,类似于复制模块

示例

  • 将文件存储到 /tmp/fetched/host.example.com/tmp/somefile
- name: Store file into /tmp/fetched/host.example.com/tmp/somefile
  fetch:
    src: /tmp/somefile
    dest: /tmp/fetched
  • 存储在相对于剧本的路径中
- name: Storing in a path relative to the playbook
  fetch:
    src: /tmp/uniquefile
    dest: special/prefix-{{ inventory_hostname }}
    flat: yes
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值