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

如何用Ansible archive模块压缩时重命名打包的目录?

如何在Ansible压缩时重命名归档内的目录

Ansible的archive模块本身没有提供压缩过程中直接重命名归档内目录的功能,你可以通过以下两种方案实现需求:

方案一:调用系统zip命令(推荐)

利用系统原生的zip命令(需确保目标主机已安装zip工具),通过其--transform参数实现归档内目录的重命名,具体任务如下:

- name: 压缩my_dir并将归档内目录重命名为whatever
  command: zip -r ./dir.zip my_dir --transform 's/^my_dir/whatever/'
  args:
    chdir: "{{ playbook_dir }}"  # 替换为你的实际工作目录,保证路径准确性

命令说明:

  • -r:递归压缩目录及所有子内容
  • --transform 's/^my_dir/whatever/':通过正则替换规则,将归档根目录下的my_dir名称替换为whatever
  • chdir:指定命令执行的工作目录,避免因相对路径导致的错误

方案二:临时软链接法

通过创建指向原目录的临时软链接,再用archive模块压缩软链接,最后清理软链接,这种方法不依赖外部命令,但需要主机支持符号链接:

- name: 创建临时软链接指向my_dir
  file:
    src: ./my_dir
    dest: ./whatever
    state: link

- name: 压缩软链接对应的目录
  archive:
    path: ./whatever
    dest: ./dir.zip
    format: zip

- name: 删除临时软链接
  file:
    path: ./whatever
    state: absent

注意事项:

  • Windows系统使用软链接需要启用开发者模式或提升操作权限
  • 软链接法会在主机上创建临时文件,需确保执行用户有足够的文件操作权限

内容的提问来源于stack exchange,提问作者Héctor Valls

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 17:27:38