You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在远程机器上使用rsync同步两个本地绝对路径?

在远程机器上通过Ansible使用rsync同步本地两个绝对路径的方案

嘿,我来帮你搞定这个问题!咱们先明确需求:你要在远程机器内部,用rsync同步这台机器上的两个本地绝对路径,对吧?结合你使用的Ansible 2.5.0、基于Ubuntu 16.04的elementary OS Loki环境,下面给你两种实用的方案:

方案一:直接在远程执行rsync命令(最推荐)

这是最直接、兼容性最好的方式——让Ansible在远程主机上运行原生的rsync命令,完全匹配你“远程机器本地同步”的需求。

示例Playbook

- name: 同步远程机器本地的两个路径
  hosts: 你的远程主机别名或IP
  tasks:
    # 先确保远程机器已安装rsync(Ubuntu系统默认可能有,但保险起见加上)
    - name: 安装rsync(如果未安装)
      apt:
        name: rsync
        state: present
        update_cache: yes

    # 执行本地同步命令
    - name: 运行rsync同步源路径到目标路径
      shell: rsync -avz /绝对路径/源目录 /绝对路径/目标目录
      args:
        warn: no  # 关闭shell模块的默认警告,因为我们明确需要用shell执行命令

关键参数说明

  • rsync -avz:这是rsync的经典组合参数:
    • a:归档模式,会保留文件权限、时间戳、软链接等所有属性
    • v:verbose模式,输出同步过程的详细信息,方便排查问题
    • z:压缩传输(虽然是本地同步,压缩不会提升速度,但也不会有负面影响,保留也无妨)
  • 如果需要删除目标路径中源路径没有的文件(实现完全镜像同步),可以加上--delete参数,命令变成:
    rsync -avz --delete /绝对路径/源目录 /绝对路径/目标目录
    

方案二:使用Ansible rsync模块(特殊场景)

如果你一定要用Ansible自带的rsync模块(比如需要利用模块的日志、幂等性校验等特性),可以通过特殊配置实现远程本地同步,但这个方案相对绕一点,仅推荐有特殊需求的场景:

示例Playbook

- name: 用Ansible rsync模块实现远程本地同步
  hosts: 你的远程主机别名或IP
  tasks:
    - name: 同步远程本地路径
      rsync:
        src: /绝对路径/源目录
        dest: /绝对路径/目标目录
        mode: pull
        delegate_to: "{{ inventory_hostname }}"

说明

这里通过delegate_to把任务委派给远程主机自己,让rsync模块在远程主机上执行本地同步操作。不过需要注意,Ansible 2.5.0的rsync模块参数可能和新版本略有差异,如果你遇到兼容性问题,优先用方案一。


内容的提问来源于stack exchange,提问作者Naftuli Kay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:31:06