Ansible 2.9.25环境下RHEL7.9中Oracle oraInventory目录备份方案求助
Ansible实现oraInventory目录备份(适配2.9.25版本)
由于community.general.archive模块在Ansible 2.9.25中存在兼容性问题,直接使用command模块模拟手动备份流程即可,以下是完整Playbook代码:
--- - name: 备份Oracle oraInventory目录 hosts: linux_oracle_servers vars: sid_name: "ORCL" # 替换为实际数据库SID,或从主机变量/Inventory中读取 tasks: - name: 确保/dbbackup目录存在 file: path: /dbbackup state: directory mode: '0755' become: yes - name: 执行oraInventory备份命令 command: tar -pczvf /dbbackup/Backup_OraInv_{{ sid_name }}.tar oraInventory | gzip > /dbbackup/Backup_OraInv_{{ sid_name }}.tar.gz args: chdir: /u01/app become: yes when: ansible_system == "Linux"
关键说明
chdir: /u01/app参数替代手动cd操作,确保tar命令在指定目录下执行- 提前创建
/dbbackup目录,避免因目标目录不存在导致备份失败 sid_name变量可根据实际场景调整:比如在Inventory中给每个主机设置sid变量,然后用{{ sid }}调用become: yes需根据实际权限配置:如果Oracle用户拥有/u01/app和/dbbackup的读写权限,可改为become_user: oracle
命令优化提示
原手动命令存在重复压缩问题:tar -pczvf中的z参数已经启用gzip压缩,再通过管道传递给gzip属于冗余操作,建议修正为以下两种方式之一:
- 用tar直接生成压缩包
tar -pczvf /dbbackup/Backup_OraInv_{{ sid_name }}.tar.gz oraInventory
- 用tar打包后再压缩(无z参数)
tar -pcvf - oraInventory | gzip > /dbbackup/Backup_OraInv_{{ sid_name }}.tar.gz
内容的提问来源于stack exchange,提问作者Learner
相关产品推荐
相关产品推荐

