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

SaltStack中rsync.synchronized无法同步目录内容的问题排查

问题原因与解决方案

核心问题

你误解了rsync.synchronized模块的路径逻辑:默认情况下,source指向的是minion节点本地的路径,而非master节点。

  • 第一次执行报错,是因为minion节点不存在/home/user/test/目录;
  • 添加prepare: True后,minion自动创建了空目录,导致rsync同步空内容,输出"total size is 0"。

不用file_roots的解决方案

要从master同步目录到minion,需将source指定为master的远程路径,以下是两种可行方式:

方式1:利用Salt的SSH信任关系(推荐)

Salt默认已建立master与minion的无密码SSH信任,直接通过SSH格式指定master路径即可:

sync_test_dir:
  rsync.synchronized:
    - name: /home/user/test/  # minion上的目标目录路径
    - source: your-master-user@your-master-hostname:/home/user/test/
    - force: True
    - rsync_opts:
        - '-avz'  # 追加rsync参数,确保同步目录内容与属性
  • 替换your-master-user为master上的用户名,your-master-hostname为master的主机名/IP;
  • name必须明确指定minion的目标路径,避免路径混淆。

方式2:通过master的rsync daemon同步

  1. 在master上配置rsyncd,共享/home/user/test/目录;
  2. SLS中指定rsync协议路径:
sync_test_dir:
  rsync.synchronized:
    - name: /home/user/test/
    - source: rsync://your-master-ip/test-share-module/
    - force: True

此方式需额外配置rsyncd,步骤较繁琐,优先推荐方式1。

额外注意事项

  • 确认master上的/home/user/test/目录存在且有内容;
  • 确保minion的目标用户对目标路径有读写权限;
  • 若master的SSH端口非默认22,需在rsync_opts中添加'-e "ssh -p 自定义端口"'。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 02:00:09