Ansible批量下载FTP大体积备份文件断点续传实现问题咨询
Ansible多站点备份断点续传批量下载实现方案
方案1:复用现有变量+循环调用wget(兼容性最强)
原有site_vars.yml的变量配置无需修改,直接调整下载任务逻辑,将单站点wget逻辑和你的批量变量做绑定即可,任务代码如下:
- name: 批量下载多站点备份(支持断点续传+自动重试) command: "wget -c {{ item.name }}" args: chdir: "{{ item.path }}" warn: false register: download_result retries: 10 delay: 3 until: download_result.rc == 0 ignore_errors: true with_items: "{{ website_backup_download }}"
相关说明:
- 直接循环你预先定义的
website_backup_download列表变量,自动匹配每个站点的下载地址和存储路径,无需额外调整变量 - wget的
-c参数实现断点续传,网络中断恢复后会从已下载的片段继续传输,不会重新下载完整文件 - 可根据备份文件大小调整重试参数,大体积文件建议将
delay调整为5-10秒,避免短时间频繁重试
方案2:Ansible原生get_url模块实现(无额外依赖)
如果目标主机不想额外安装wget,可升级Ansible到2.8及以上版本,使用get_url模块自带的断点续传参数实现,任务代码如下:
- name: 批量下载多站点备份(get_url原生实现) get_url: url: "{{ item.name }}" dest: "{{ item.path }}" mode: '0750' resume: yes timeout: 60 no_log: false ignore_errors: true register: download_result retries: 10 delay: 3 until: download_result is succeeded with_items: "{{ website_backup_download }}"
相关说明:
- get_url的
resume: yes参数为原生断点续传能力,效果和wget的-c参数一致 - 任务级的
until判断会自动重试下载失败的站点,直到执行成功或者达到设置的重试次数上限
内容的提问来源于stack exchange,提问作者theadmin
相关产品推荐
相关产品推荐

