ansible 在 src 和 dest 之间在同一主机上同步

ansible synchronize on same host between src and dest

我正在尝试使用同步而不是移动,以便使用组和权限选项保留对目标目录的 acl 和权限。 我正在尝试在同一远程服务器上存在的 src 和 dest 路径之间进行 rsync(同步)。

我 运行 遇到了这个错误,我不确定发生了什么。

fatal: [foonode.bar.com]: FAILED! => {"changed": false, "cmd": "sshpass -d12 /usr/bin/rsync --delay-updates -F --compress --archive '--rsh=/usr/bin/ssh -S none -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' '--out-format=<>%i %n%L' /foo/sbar_test/xyz/xyz'foonode.bar.com:rsync:'"'"'/dest/testing/test_yzs/qwert'"'"''", "msg": "[Errno 32] Broken pipe", "rc": 32}

#this is the code snippet trying to rsync in the role
- name: "move '{{ root_path }}/{{ type }}/{{ name }}' root data from source to destination '{{destination_path}}'"
    # Synchronization using rsync protocol (push)
  synchronize:
      src: '{{ root_path }}/{{ type }}/{{ name }}'
      dest: rsync:'{{destination_path}}'

synchronize 是 rsync 的包装器,可以使您的 playbook 中的常见任务快速简单。 它是 运行 并且起源于正在运行 Ansible 的本地主机 运行。当然,您可以只使用命令操作自己调用 rsync,但您还必须添加大量样板选项和主机信息。 synchronize 并非旨在提供对 rsync 全部功能的访问,但确实使最常见的调用更容易实现。根据您的用例,您可能仍然需要通过命令或 shell 直接调用 rsync。

您不能在远程主机上使用模块同步。 您可以使用模块命令 运行 远程主机上的 rsync 命令。