community.general.archive 模块 – 创建一个或多个文件或目录的压缩存档
注意
此模块是 community.general 集合 (版本 10.1.0) 的一部分。
如果您正在使用 ansible 包,您可能已经安装了此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list。
要安装它,请使用: ansible-galaxy collection install community.general。您需要其他要求才能使用此模块,有关详细信息,请参阅 要求。
要在 playbook 中使用它,请指定: community.general.archive。
概要
- 创建或扩展存档。 
- 源和存档位于远程主机上,存档 *不会* 复制到本地主机。 
- 通过指定 - remove=True,可以在存档后删除源文件。
要求
执行此模块的主机需要以下要求。
- 如果使用 - xz格式,则需要- lzma(Python 3 的标准库)或 backports.lzma(Python 2)。
参数
| 参数 | 注释 | 
|---|---|
| 结果文件系统对象应具有的属性。 要获取支持的标志,请查看目标系统上  此字符串应按  
 | |
| 要从  使用  默认值:  | |
| 用于从生成的存档中排除文件或目录的 glob 风格模式。 这与  | |
| 允许您强制模块将此视为存档,即使只指定了一个文件。 默认情况下,如果只指定一个文件,则只对其进行压缩(不进行存档)。 如果您想使用 ansible.builtin.unarchive 在使用此模块创建的单个文件的存档上,请启用此选项。 选项 
 | |
| 要使用的压缩类型。 选项 
 | |
| 应该拥有文件系统对象的组的名称,如同提供给 如果未指定,则使用当前用户的当前组,除非您是 root 用户,在这种情况下,它可以保留之前的拥有者。 | |
| 生成的 文件系统对象应具有的权限。 对于习惯使用 如果不遵循以上任一规则向 Ansible 提供数字,则最终会得到一个十进制数,这将产生意外的结果。 从 Ansible 1.8 开始,模式可以指定为符号模式(例如, 如果未指定 如果未指定 指定 | |
| 应该拥有文件系统对象的用户的名称,如同提供给 如果未指定,则使用当前用户,除非您是 root 用户,在这种情况下,它可以保留之前的拥有者。 指定数字用户名将被认为是用户 ID 而不是用户名。避免使用数字用户名以避免此混淆。 | |
| 要压缩或存档的文件或文件的远程绝对路径、通配符或路径或通配符列表。 | |
| 添加到存档后删除任何添加的源文件和树。 选项 
 | |
| SELinux 文件系统对象上下文中的级别部分。 这是 MLS/MCS 属性,有时称为 设置为 | |
| SELinux 文件系统对象上下文中的角色部分。 设置为 | |
| SELinux 文件系统对象上下文中的类型部分。 设置为 | |
| SELinux 文件系统对象上下文中的用户部分。 默认情况下,它使用 设置为 | |
| 影响何时使用原子操作来防止数据损坏或目标文件系统对象的不一致读取。 默认情况下,此模块使用原子操作来防止数据损坏或目标文件系统对象的不一致读取,但有时系统的配置方式或损坏方式会阻止这种情况。一个例子是 docker 挂载的文件系统对象,无法从容器内部以原子方式更新,只能以不安全的方式写入。 此选项允许 Ansible 在原子操作失败时回退到不安全的文件系统对象更新方法(但是,它不会强制 Ansible 执行不安全写入)。 重要!不安全写入容易出现竞争条件,并可能导致数据损坏。 选项 
 | 
属性
| 属性 | 支持 | 描述 | 
|---|---|---|
| 支持:完全支持 | 可以在 | |
| 支持:不支持 | 处于差异模式时,将返回有关已更改内容(或可能需要在 | 
备注
注意
- 可以生成 - gzip、- bzip2、- lzma和- zip压缩文件或存档。
- 此模块在目标主机上使用 - tarfile、- zipfile、- gzip和- bz2包来创建存档。这些是 Python 2 和 3 的 Python 标准库的一部分。
另请参阅
另请参阅
- ansible.builtin.unarchive
- (可选)从本地机器复制后解压缩存档。 
示例
- name: Compress directory /path/to/foo/ into /path/to/foo.tgz
  community.general.archive:
    path: /path/to/foo
    dest: /path/to/foo.tgz
- name: Compress regular file /path/to/foo into /path/to/foo.gz and remove it
  community.general.archive:
    path: /path/to/foo
    remove: true
- name: Create a zip archive of /path/to/foo
  community.general.archive:
    path: /path/to/foo
    format: zip
- name: Create a bz2 archive of multiple files, rooted at /path
  community.general.archive:
    path:
    - /path/to/foo
    - /path/wong/foo
    dest: /path/file.tar.bz2
    format: bz2
- name: Create a bz2 archive of a globbed path, while excluding specific dirnames
  community.general.archive:
    path:
    - /path/to/foo/*
    dest: /path/file.tar.bz2
    exclude_path:
    - /path/to/foo/bar
    - /path/to/foo/baz
    format: bz2
- name: Create a bz2 archive of a globbed path, while excluding a glob of dirnames
  community.general.archive:
    path:
    - /path/to/foo/*
    dest: /path/file.tar.bz2
    exclude_path:
    - /path/to/foo/ba*
    format: bz2
- name: Use gzip to compress a single archive (i.e don't archive it first with tar)
  community.general.archive:
    path: /path/to/foo/single.file
    dest: /path/file.gz
    format: gz
- name: Create a tar.gz archive of a single file.
  community.general.archive:
    path: /path/to/foo/single.file
    dest: /path/file.tar.gz
    format: gz
    force_archive: true
返回值
常见返回值已在此处记录,以下是此模块特有的字段
| 键 | 描述 | 
|---|---|
| 任何已压缩或添加到存档的文件。 返回:成功 | |
| 存档根目录。 返回:始终返回 | |
| 来自 exclude_path 参数的匹配排除路径列表。 返回:始终返回 | |
| 来自 paths 参数的匹配路径列表。 返回:始终返回 | |
| 源中缺少的任何文件。 返回:成功 | |
| 输入 返回:始终返回 | 
