如何使用 Ansible 将多个文件夹归档到一个文件夹下

Posted

技术标签:

【中文标题】如何使用 Ansible 将多个文件夹归档到一个文件夹下【英文标题】:How to archive multiple folders under one folder using Ansible 【发布时间】:2020-07-11 14:22:39 【问题描述】:

我正在使用下面的 ansible-playbook 代码来归档 IBM 文件夹下的多个文件夹。

下面是我的绝对路径目录结构:

/app
   |-- /IBM
          |--/test
          |--/log
          |--/common
          |--/api

我希望构建一个只有 IBM 文件夹的存档 (gz),其中仅包含 commonapi 文件夹。

因此,我编写了以下剧本:

- name: Creating the archive
  archive:
    path: 
    - /was/IBM/common
    - /was/IBM/api
    dest: /var/backup/mysetup.tar.gz
    exclude_path:
    - /was/IBM/log
    - /was/IBM/test
    format: gz

这给了我文件mysetup.tar.gz

我希望mysetup.tar.gz 文件有一个名为 IBM 的文件夹,其中应该有两个文件夹 common 和 api。因此,我期待mysetup.tar.gz中的以下内容@

IBM
  |--/common
  |--/api

但是,mysetup.tar.gz 没有 IBM 文件夹,只有 commonapi 文件夹。

您能否指导我如何让存档将两个文件夹都包含在 IBM 文件夹中?

【问题讨论】:

【参考方案1】:

您需要包含整个 IBM 文件夹,然后排除您不想要的路径

- name: Creating the archive
  archive:
    path: 
    - /was/IBM
    dest: /var/backup/mysetup.tar.gz
    exclude_path:
    - /was/IBM/log
    - /was/IBM/test
    format: gz

【讨论】:

如果 IBM 内部还有其他几个文件夹,但我不确定是否排除所有这些文件夹,因为它们是由随机用户创建的?因此,我的要求是 1. 排除我知道我不需要的特定文件夹 2. 在 IBM 中包含我绝对需要的几个文件夹。现在,IBM 下可能还有其他文件夹,但我的档案中不需要它们。

以上是关于如何使用 Ansible 将多个文件夹归档到一个文件夹下的主要内容,如果未能解决你的问题,请参考以下文章

在Linux 中如何归档文件和目录

用于取消归档的 ansible 本地文件路径

使用 Ansible 复制多个文件

如何在ansible中更快地制作zip存档?

linux第三天

文件合并,归档,压缩