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

Ansible技术问题:如何提升win_copy模块的文件传输速度?

提升Ansible win_copy速度及替代方案

优化win_copy传输速度的方法

  • 调整WinRM服务配置:win_copy依赖WinRM通道传输,默认参数限制了传输效率,在Windows目标节点执行以下命令调大相关参数:
    winrm set winrm/config/winrs '@{MaxMemoryPerShellMB="1024"}'
    winrm set winrm/config/service '@{MaxConcurrentOperationsPerUser="100"}'
    winrm set winrm/config '@{MaxEnvelopeSizekb="8192"}'
    
  • 启用Ansible WinRM管道化:在ansible.cfg中添加或修改配置,减少WinRM交互次数:
    [defaults]
    pipelining=True
    
    同时调整WinRM超时参数:
    [winrm]
    winrm_read_timeout_sec=60
    winrm_operation_timeout_sec=30
    
  • 压缩后传输再解压:针对多文件或大文件场景,先在Linux控制节点打包压缩,传输后在Windows端解压:
    1. Linux端打包:tar zcf target_files.tar.gz /path/to/source/files
    2. 用win_copy传输压缩包到Windows
    3. 用win_unzip模块解压到目标路径
  • 异步执行批量任务:如果是批量复制文件,启用异步模式减少等待开销:
    - name: 异步复制文件
      win_copy:
        src: "{{ item }}"
        dest: C:\target\
      loop: "{{ file_list }}"
      async: 300
      poll: 0
      register: copy_jobs
    
    - name: 等待复制任务完成
      async_status:
        jid: "{{ item.ansible_job_id }}"
      loop: "{{ copy_jobs.results }}"
      until: item.finished
      retries: 10
      delay: 5
    

替代复制方案(绕过WinRM提升速度)

  • SMB共享挂载复制:
    1. 在Windows目标节点创建SMB共享目录,配置权限允许Linux控制节点访问
    2. 在Linux控制节点挂载共享:
      mount -t cifs //WIN_SERVER_IP/share_path /mnt/win_share -o username=WIN_USER,password=WIN_PASS
      
    3. 用Ansible的copy模块直接复制到挂载目录,绕过WinRM通道:
      - name: 复制文件到SMB挂载目录
        copy:
          src: /path/to/local/file
          dest: /mnt/win_share/target/
      
  • Rsync传输:
    1. 在Windows目标节点安装Rsync服务(如cwRsync)并配置
    2. 在Linux控制节点用Ansible调用rsync命令传输:
      - name: Rsync文件到Windows
        command: rsync -avz /path/to/source/files WIN_USER@WIN_SERVER_IP::share_module/target/
      
  • WinSCP命令行传输:
    1. Linux控制节点安装WinSCP
    2. 编写WinSCP脚本并通过Ansible调用,实现SCP/SFTP传输:
      - name: 用WinSCP传输文件
        shell: |
          winscp.com /command "open sftp://WIN_USER:WIN_PASS@WIN_SERVER_IP/" "put /path/to/local/file C:\target\file" "exit"
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 14:12:54